问题
Using Pick, Pack and Ship and advanced PDF HTML templates, NetSuite cannot display the qty remaining to pick. So if we do a partial pick, we cannot show the warehouse the remaining balance. The math is simple, here is the script and function I would like to see (based on forum feedback). Will this work and what is the best way to deploy this script such that the result is stored in the custom column until another pick takes place? The value is to be calculated at time of changes, but available to all related transaction records.
function SetQtytoPick(type){
if(type == 'item'){
var qtyordered = nlapiGetCurrentLineItemValue('item', 'quantity');
var qtypicked = nlapiGetCurrentLineItemValue('item', 'quantitypicked');
var qtytopick = qtyordered-qtypicked
nlapiSetCurrentLineItemValue('item', 'custcol_qty_to_pick', qtytopick);
}
}
回答1:
Actually one of the really fun things about the Advanced HTML/PDF templates is that you don't need your code. When print the packing slip the template supplies the item fulfillment (as record) and the sales order (as salesorder).
You can get the value you need from the Sales Order's Item Line's quantityfulfilled value.
the following snippet was from a customized packing slip where the customer wanted the PS to always show all the Sales Order's items. It doesn't directly solve your problem but you can see that the template itself can be used to calculate the items remaining to ship at the time of printing.
<#list salesorder.item as tranline>
<#assign shipped=0>
<#assign prevShipped=tranline.quantityfulfilled>
<#assign qtyRemaining=tranline.quantity - prevShipped>
<#if (tranline.quantitybackordered gt 0)> <#assign qtyRemaining=tranline.quantitybackordered></#if>
<#list record.item as item><#if tranline.line==item.orderline>
<#assign shipped=item.quantity>
<#assign prevShipped=tranline.quantityfulfilled-item.quantity>
</#if></#list>
<tr>
<td colspan="12"><span class="itemname">${tranline.item}</span><#if tranline.itemtype =='NonInvtPart'>**<#assign anyNonInvt='T'></#if><br />${tranline.description?html}</td>
<td align="center" colspan="3"><#if shipped gt 0><b>${shipped}</b><#else>0</#if></td>
<td align="center" colspan="3">${tranline.quantity}</td>
<td align="center" colspan="3">${prevShipped}</td>
<td align="center" colspan="3">${qtyRemaining}</td>
<td colspan="4">${tranline.options?html}</td>
</tr>
</#list>
</#if>
The other way to do this would be to put your script into a user event script before submit event. You'd deploy it on Item Fulfillments
来源:https://stackoverflow.com/questions/35801629/suitescript-set-custom-column-value-netsuite