SuiteScript 根据发货位置对重量求和

     2023-02-22     49

关键词:

【中文标题】SuiteScript 根据发货位置对重量求和【英文标题】:SuiteScript to sum the weight based on ship-out location 【发布时间】:2018-07-20 08:33:15 【问题描述】:

我希望能够根据发货位置计算销售订单上商品的总重量,并将值存储在自定义字段中。我在提交脚本之前创建了一个。自定义字段设置为十进制数字类型并选中存储值框,但在销售订单页面的字段下没有显示任何内容。

function calculateWeight(type)

  var lines = nlapiGetLineItemCount('item');

  var totalWeight2 = 0 ;
  var totalWeight1 = 0 ;

  if (lines >0)
      for(var i = 1; i<= lines ; i++)
          var location = nlapiGetLineItemValue('item','location', i);
          var quantitycommitted = nlapiGetLineItemValue('item','quantitycommitted', i);
          var weight = nlapiGetLineItemValue('item','custcol_individual_weight', i);
          //var com_wgt = nlapiGetLineItemValue('item','custcol1',i);

          if (location === '2')
              var total2 = weight * quantitycommitted;

              totalWeight2 += total2 ;
          

          if (location === '1')
              var total1 = weight * quantitycommitted;

              totalWeight1 += total1 ;
          

      

      nlapiSetFieldValue('custbody5', totalWeight1);
      nlapiSetFieldValue('custbody4', totalWeight2);

  


我仍在学习 SuiteScript,但我不确定哪里出了问题...有人可以帮忙吗?


更新代码,仅对部分订单有效...

function calculateWeight(type)

  var lines = nlapiGetLineItemCount('item');
  //nlapiLogExecution('DEBUG', 'Number of lines', lines);

  var totalWeight2 = 0 ;
  var totalWeight1 = 0 ;

  if (lines >0)
      for(var i = 1; i<= lines ; i++)
      var location = nlapiGetLineItemValue('item','location', i);
    //nlapiLogExecution('DEBUG', 'Locations', location);
      var quantitycommitted = parseInt(nlapiGetLineItemValue('item','quantitycommitted', i),10) || 0;
    //nlapiLogExecution('DEBUG', 'QtyCom', quantitycommitted);
      var weight = parseFloat(nlapiGetLineItemValue('item','custcol_individual_weight', i)) ||0;
     //nlapiLogExecution('DEBUG', 'Wgt', weight);

    //var com_wgt = nlapiGetLineItemValue('item','custcol1',i);

      if (location == '2')
          var total2 = weight * quantitycommitted;

          totalWeight2 += total2 ;
        nlapiLogExecution('DEBUG', 'Total2', totalWeight2);

      

      if (location == '1')
          var total1 = weight * quantitycommitted;

          totalWeight1 += total1 ;
        nlapiLogExecution('DEBUG', 'Total1', totalWeight1);
      

  

  nlapiSetFieldValue('custbody_ms_weight_ppt_page', totalWeight1);
  nlapiSetFieldValue('custbody_wi_weight_ppt_page', totalWeight2);

 


【问题讨论】:

我对 SuiteScript 1.0 有点生疏,但您可能需要加载上下文才能使用 nlapiGetContext() 访问记录。我建议记录一些变量以确保它们返回您期望的值 - 例如 var lines = nlapiGetLineItemCount('item'); 之后的 nlapiLogExecution('DEBUG', 'Number of lines', lines); - 如果返回 -1 这意味着它没有查看实际记录。跨度> 你好@Krypton! :D 我记录了所有变量,它们都有正确的值,我没有使用 nlapiGetContext()。我根据下面的答案对我的代码进行了更改并且它有效;但是,该脚本似乎仅适用于在脚本运行后创建/修改的销售订单,而不适用于所有已经存在的销售订单...您知道发生了什么...? beforeSubmit 用户事件仅在SuiteAnswer 10635 中列出的写入操作类型上触发。因此,需要触发其中一个事件才能运行脚本。如果您想将这些更改应用到所有现有的销售订单,您可能需要编写一个计划的或 map/reduce 脚本。您可以将其设置为 scheduled script triggers the user event 如果适用 - 这将节省重写逻辑。 我明白了...我会检查 schedule/map/reduce 脚本!非常感谢你的想法!!! 【参考方案1】:

你需要解析行值:

var quantitycommitted = parseInt(nlapiGetLineItemValue('item','quantitycommitted', i),10) || 0;
var weight = parseFloat(nlapiGetLineItemValue('item','custcol_individual_weight', i)) ||0;

在某些情况下,您的位置 ID 也不是字符串,因此这也可能是问题所在。依靠== 而不是=== 有效。

【讨论】:

感谢您的解决方案,我认为它有效!但是,该脚本似乎并未填充所有现有订单的字段。它仅在我创建新订单或编辑+保存现有订单时有效。这是因为我正在使用之前提交事件...?有没有办法让脚本也为所有现有订单填充字段? 您必须在批量更新脚本中使用代码或将您的销售订单导出到电子表格;进行计算并重新导入; IMO 大规模更新脚本更容易。 您也可以在值为空白的情况下进行导出,然后导入更改任何值(我历来为此在备注字段的末尾设置了一个句点)。如果您在导入期间打开“运行服务器套件脚本”,那么您的脚本将在这些命令上触发。这可能比在 Excel 中进行计算或编写仅运行一次的单独脚本更容易。利用您构建的内容! 很好的建议。我忘记了,我也用同样的想法对大规模更新脚本做了同样的事情。 bknights 和@TMann 谢谢你的建议,我会试试的!我在运行脚本几天后发现了另一个问题。即使所有变量都大于零,它仍然显示总权重(totalWeight1 和 totalWeight2)为 0。我们使用的是自动位置分配,是不是因为在分配位置之前脚本正在运行?

根据条件对相邻行求和

】根据条件对相邻行求和【英文标题】:Summingadjacentrowsbasedonconditionals【发布时间】:2013-12-0318:45:17【问题描述】:我有一个类似的data.frameid<-c(1,1,1,2,2,3,3,3,3,3)action<-c("for","l","for","f","l","l","for","for","for","f")time<-c(45,35,24,56, 查看详情

根据重叠时段对数据进行分组或求和

】根据重叠时段对数据进行分组或求和【英文标题】:GrouporSumthedatabasedonoverlappingperiod【发布时间】:2021-01-1416:14:00【问题描述】:我正在将旧系统数据迁移到新系统。我正在尝试根据更改的日期迁移具有历史记录的数据。我当... 查看详情

如何按位置对 postgresql 数组的元素求和?

】如何按位置对postgresql数组的元素求和?【英文标题】:HowcanIsumelementsofpostrgresqlarraysbyposition?【发布时间】:2018-10-0402:33:20【问题描述】:假设我有一个查询返回生产作业表,在一列中我有过去7天每个作业的输出数组:sku|job|ou... 查看详情

如何根据多个条件对行求和 - R? [复制]

】如何根据多个条件对行求和-R?[复制]【英文标题】:Howtosumrowsbasedonmultipleconditions-R?[duplicate]【发布时间】:2015-05-0911:56:05【问题描述】:我有一个数据框,其中包含地块ID(plotID)、树种代码(species)和覆盖值(cover)。您可以看到其... 查看详情

根据具有标准的组对连续月份求和

】根据具有标准的组对连续月份求和【英文标题】:SumConsecutiveMonthsBasedonGroupswithCriteria【发布时间】:2020-04-2714:46:18【问题描述】:我在缩小连续几个月发生的热门地区的销售额时遇到了麻烦。我知道我需要在Row_Number或Dense_Rank... 查看详情

如何根据 SQL 中的分区对行求和?

】如何根据SQL中的分区对行求和?【英文标题】:HowtosumrowsaccordingtopartitioninSQL?【发布时间】:2014-05-2905:35:11【问题描述】:如何根据分区在行内添加值,并且总和将放在每个分区下方(每个分区下方的新行将是总和的容器)?... 查看详情

根据不同的条件对两个不同的列进行分组和求和

】根据不同的条件对两个不同的列进行分组和求和【英文标题】:GroupingandSummingtwodifferentcolumnsbasedondifferentconditions【发布时间】:2016-02-1701:43:43【问题描述】:我在这里有一个场景。我有一个函数可以正确计算Non_CombinedSet列的值... 查看详情

Pandas:如何根据其他列值的条件对列进行求和?

】Pandas:如何根据其他列值的条件对列进行求和?【英文标题】:Pandas:Howtosumcolumnsbasedonconditionalofothercolumnvalues?【发布时间】:2016-10-2304:36:17【问题描述】:我有以下pandasDataFrame。importpandasaspddf=pd.read_csv(\'filename.csv\')print(df)dogABC... 查看详情

大件拦截和收到后再退回的区别

...参考技术A大件拦截是指当物流公司发现货物超出了允许发货的尺寸和重量规定时,会拦截货物,并发出通知书通知发件人收回货物,以便让发件人重新发货。收到后再退回的区别是指当收货人收到货物后,发现货物超出了允许... 查看详情

根据另一个表中的最大值对列求和

】根据另一个表中的最大值对列求和【英文标题】:Summingacolumnbasedonthetopthelargestvaluesinanothertable【发布时间】:2021-06-0120:26:53【问题描述】:我的数据库分为团队游戏和用户游戏。每支球队都可以参加多场比赛(无限制),这些... 查看详情

根据 pandas 中的字典对数据帧的行进行分组并对相应的分子求和

】根据pandas中的字典对数据帧的行进行分组并对相应的分子求和【英文标题】:Grouprowsofdataframeaccordingtodictionaryinpandasandsumcorrespondingnumerators【发布时间】:2021-12-1819:03:32【问题描述】:我有一个错误代码、分子及其分母的数据框... 查看详情

根据另一个表中的开始日期和结束日期对值求和

】根据另一个表中的开始日期和结束日期对值求和【英文标题】:Sumvaluesbasedonstartandenddatesinanothertable【发布时间】:2020-10-2707:45:14【问题描述】:我正在尝试使用SQL在BigQuery中进行计算,但我不知道该怎么做。我有两张桌子:Tab... 查看详情

如何对特定列中具有相同值的行求和

...:2017-06-1616:49:12【问题描述】:我正在尝试获得显示展示位置产生的收入的结果。要计算展示位置收入,我需要进行此计算(campaign_cpc(欧元)*展示位置产生的点击次数)。一个展示位置可以通过不同的campaign_cpc产生点击。现... 查看详情

在 R 中,如何根据一列的值对所有其他列求和,而不指定列名?

】在R中,如何根据一列的值对所有其他列求和,而不指定列名?【英文标题】:InR,howtosumallothercolumnsbasedonvalueofonecolumn,withoutspecifyingcolumnnames?【发布时间】:2020-02-0602:01:10【问题描述】:我有401列。第401列代表PIN代码。我想根据... 查看详情

Pandas - 根据另一个列表中的索引对列表中的值求和

】Pandas-根据另一个列表中的索引对列表中的值求和【英文标题】:Pandas-Sumvaluesinlistaccordingtoindexfromanotherlist【发布时间】:2019-08-1022:39:15【问题描述】:由于我要处理大量数据,因此我正在尝试找到最符合Python标准的方法来在尽... 查看详情

设置子列表字段值时的 NetSuite SuiteScript 2.0 invalid_fld_value

】设置子列表字段值时的NetSuiteSuiteScript2.0invalid_fld_value【英文标题】:NetSuiteSuiteScript2.0invalid_fld_valuewhensettingsublistfieldvalue【发布时间】:2017-09-1406:08:57【问题描述】:我正在使用NetSuite合同续订模块并尝试制作一个NetSuite用户事... 查看详情

试图找到一种方法来根据在 excel 中不同表中查找的条件对字段求和

】试图找到一种方法来根据在excel中不同表中查找的条件对字段求和【英文标题】:TryingtofindawaytoSUMafieldbasedoncriterialookedupindifferenttableinexcel【发布时间】:2020-12-2921:51:05【问题描述】:请参阅下表了解数据。我正在尝试回答“归... 查看详情

如何找到发货的最佳仓库位置?

】如何找到发货的最佳仓库位置?【英文标题】:Howtofindthebestwarehouselocationtoshipfrom?【发布时间】:2013-02-1421:50:56【问题描述】:我有以下问题要解决。我们希望从美国各地的几个仓库运送产品。让我们假设这些仓库的产品总是... 查看详情