Даты транзакций NetSuite

В транзакции NetSuite можно выбирать множество дат, в частности, заказ на продажу. Я использую SuiteTalk для синхронизации доставки информации из NetSuite в устаревшую систему. Какая дата является правильной датой, чтобы определить, когда было выполнено действие по заказу на продажу, чтобы указать что-то отгруженное?

3 ответа

Изучив и сравнив все значения дат во всех заказах на продажу, я пришел к выводу, что нет явного победителя, который бы отображал дату и время, когда он был активен. Поле формулы было лучшим решением. Вот сохраненный поиск, который демонстрирует эту формулу.

критерии фильтра

Обратите внимание на формулу ниже, которая находит максимальную дату из всех соответствующих дат.

Определения столбцов

Эта вычисленная дата может также использоваться в фильтре для поиска только недавно измененных позиций заказов на продажу, особенно тех, которые были отправлены вместе с номерами отслеживания и количествами.

Вот формула в формате, который можно вырезать и вставить.

GREATEST({trandate},{lastmodifieddate},{linelastmodifieddate},{billingtransaction.trandate},{billingtransaction.lastmodifieddate},{billingtransaction.linelastmodifieddate})

Обратившись в службу поддержки NetSuite, я узнал, что {linelastmodifieddate} недоступен через SuiteTalk API. Это оставило меня со следующими датами:

{trandate}
{lastmodifieddate}
{billingtransaction.trandate}
{billingtransaction.lastmodifieddate}

В моем случае я отслеживаю все заказы на продажу, чтобы видеть, когда что-то отправляется. Поэтому я хочу знать, когда мы выполняем отдельную позицию или когда отправляем товар. Проблема у меня была в том, что эти даты повсюду. Я хотел включить {linelastmodifieddate}, потому что были времена, когда это было самое последнее.

Поскольку мы выставляем счет, когда товары отправляются или отправляются, {billingtransaction.trandate} представляет точную дату отправки. {billingtransaction.quantity} представляет и точное количество отправлено. И {billingtransaction.trackingnumbers} включает в себя список номеров отслеживания для этой отправки. Это вся информация, которая мне нужна, чтобы увидеть "Статус доставки" каждой позиции в заказе на продажу.

Вот пример кода, с которого я начал, чтобы идентифицировать заказы на продажу, которые недавно были отправлены.

        service.searchPreferences = new SearchPreferences();
        service.searchPreferences.bodyFieldsOnly = false;
        service.searchPreferences.returnSearchColumns = true;

        TransactionSearchAdvanced customSearch = new TransactionSearchAdvanced()
        {
            savedSearchScriptId = "customsearch_[your saved search here]"
            ,criteria = new TransactionSearch()
            {
               [your criteria here]
            }

        };

        Console.WriteLine("Querying NetSuite");
        SearchResult res = service.search(customSearch);

        Console.WriteLine("\nThe search() operation completed successfully.");
        Console.WriteLine("  Total Records = " + res.totalRecords);
        Console.WriteLine("  Total Pages = " + res.totalPages);
        Console.WriteLine("  Page Size = " + res.pageSize);
        Console.WriteLine("  Current Page Index = " + res.pageIndex);

        List<TransactionSearchRow> tsRows = new List<TransactionSearchRow>();

        // Page through all the results
        while (res.searchRowList.Length > 0)
        {
            foreach (TransactionSearchRow transactionRow in res.searchRowList)
            {
                tsRows.Add(transactionRow);
            }

            Console.WriteLine("\nQuerying NetSuite again...");
            res = service.searchMore(++res.pageIndex);
        }

        // Sort the results
        tsRows.Sort(delegate (TransactionSearchRow x, TransactionSearchRow y)
        {
            return x.basic.tranId[0].searchValue.CompareTo(y.basic.tranId[0].searchValue);
        });

        int i = 1;

        // Parse the results
        foreach (TransactionSearchRow tsRow in tsRows)
        {
            TransactionSearchRowBasic transactionRowBasic = tsRow.basic;
            ItemSearchRowBasic itemRowBasic = tsRow.itemJoin;
            TransactionSearchRowBasic billingRowBasic = tsRow.billingTransactionJoin;

            string itemItemId = "";
            string itemDesc = "";
            double reqQty = 0;
            string billTranId = "";
            double billQty = 0;
            string billTrackNo = "";

            try { itemItemId = itemRowBasic.itemId[0].searchValue; } catch { }
            try { itemDesc = itemRowBasic.salesDescription[0].searchValue; } catch { }
            try { reqQty = transactionRowBasic.quantity[0].searchValue; } catch { }
            try { billTranId = billingRowBasic.tranId[0].searchValue; } catch { }
            try { billQty = billingRowBasic.quantity[0].searchValue; } catch { }
            try { billTrackNo = billingRowBasic.trackingNumbers[0].searchValue; } catch { }

            DateTime trandate = DateTime.MinValue;
            DateTime lastmodifieddate = DateTime.MinValue;
            DateTime billtrandate = DateTime.MinValue;
            DateTime billlastmodifieddate = DateTime.MinValue;

            try { trandate = transactionRowBasic.tranDate[0].searchValue; } catch { }
            try { lastmodifieddate = transactionRowBasic.lastModifiedDate[0].searchValue; } catch { }
            try { billtrandate = billingRowBasic.tranDate[0].searchValue; } catch { }
            try { billlastmodifieddate = billingRowBasic.lastModifiedDate[0].searchValue; } catch { }

            var list = new List<DateTime>();
            list.Add(Convert.ToDateTime(trandate));
            list.Add(Convert.ToDateTime(lastmodifieddate));
            list.Add(Convert.ToDateTime(billtrandate));
            list.Add(Convert.ToDateTime(billlastmodifieddate));
            DateTime maxdate = list.Max(date => date);


            Console.WriteLine(
                $"\n {i++} of {tsRows.Count}" +
                $"\n    Document Number: {transactionRowBasic.tranId[0].searchValue}" +
                $"\n    SO Date: {trandate}" +
                $"\n    SO Modified: {lastmodifieddate}" +
                $"\n    Invoice Date: {billtrandate}" +
                $"\n    Invoice Modified: {billlastmodifieddate}" +
                $"\n    +++Max Date: {maxdate}" +
                $"\n    Item Name: {itemItemId}" +
                $"\n    Item Description: {itemDesc}" +
                $"\n    Bill Doc Number: {billTranId}" +
                $"\n    Requested Qty: {reqQty}" +
                $"\n    Bill Qty: {billQty}" +
                $"\n    Tracking Nos: {billTrackNo}"
            );

        }

        service.logout();
        Console.WriteLine("\n\nHit Enter to close this window.");
        Console.ReadLine();

Посмотрите, можете ли вы найти {shipdate} или {actualshipdate}

Другие вопросы по тегам