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

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


person Kevin M    schedule 29.11.2017    source источник


Ответы (3)


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

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

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

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

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

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

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

person Kevin M    schedule 29.11.2017
comment
Есть проблема с этим решением. {linelastmodifieddate} недоступен через SuiteTalk API SuiteTalk. Я связался с NetSuite, и они подтвердили это и сказали, что добавят его в список требуемых улучшений. - person Kevin M; 01.12.2017

Посмотрите, сможете ли вы найти {shipdate} или {actualshipdate}  введите описание изображения здесь

person nskr    schedule 30.11.2017
comment
Проблема в том, что я начинаю с заказа на продажу в сохраненном поиске и хочу знать товары, которые были отгружены. Это включает в себя товары, которые мы выполняем собственными силами, и прямые поставки. Связь между заказом на продажу и полями платежной операции (счет-фактура) показывает правильное количество, а также номера отслеживания для каждой отгрузки. Это верно независимо от того, были ли товары выполнены или доставлены напрямую. Я ищу способ извлечения отправлений (обоих типов), где я могу показать номер заказа на продажу, товар, дату отгрузки, количество отгрузки и номера отслеживания для выбранного заказа на продажу. - person Kevin M; 01.12.2017

После обращения в службу поддержки 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();
person Kevin M    schedule 01.12.2017