CRM0116 Create issue Store orders for products that are stocked

Basic Information

Module Crm.Sales
Code CRM0116
Parent Document Sales Order
Sub-document Store Order
Full Name Create issue Store orders for products that are stocked
Status ACTIVE
Deterministic YES
Supports Transitional Documents YES
Supports Single Execution YES
Replaces GenerateStoreOrder
Orphan Rows Ignore
Split Function SalesOrderLine.StoreSalesOrderLine.RequiredDeliveryDate
Introduced In Version 2019.1
Date of Suspension -

Business Logic

This Generation is used to create Store Orders for all products from the current Sale Order that are stocked (Product.ProductType.IsStocked = True). Unlike CRM0104 this generation procedure does not check whether the products is shipped or not (Product.ProductType.IsShipped = True/False).

Different lines in the Sales Order may have different Stores or Required Delivery Dates, and for different values in these fields - different Store Orders should be created. Therefore, at the beginning of the generation procedure, all combinations of Store and Required Delivery Date from the Sales Order Lines are determined (but only for the lines that are not used for returning goods according to the classification in topic Sales Order Row Types and whose products are not shipped and are stocked).

For each of these combinations of Store and Required Delivery Date, a separate Store Order is created. The Store Order’s header is created based on the Sales Order’s header as follows:

StoreOrder.Store = Store

StoreOrder.MovementType = Issue

StoreOrder.DueDate = RequiredDeliveryDate

StoreOrder.PlannedReleaseDate = RequiredDeliveryDate

StoreOrder.PlannedCompletionDate = RequiredDeliveryDate

StoreOrder.IssuedByParty = Store.ResponsibleParty

StoreOrder.DocumentCurrency = SalesOrder.DocumentCurrency
Note

The attributes which are not specified here are filled in as described in Standard Document Attributes

Fulfillments

Name SalesOrderLineToStoreOrderLine
Parent Entity SalesOrderLine
Child Entity StoreOrderLine
Parent / Child Relationship StoreOrderLine.ParentDocument = SalesOrder; StoreOrderLine.ParentLineNo = SalesOrderLine.LineNo

Metrics

Fulfillment Name Metric Name Measurement Unit Parent Value Child Value New Record
SalesOrderLineToStoreOrderLine MStandardQuantityBase SalesOrderLine..Product.BaseMeasurementUnit SalesOrderLine.StandardQuantityBase StoreOrderLine.StandardQuantityBase YES
SalesOrderLineToStoreOrderLine MQuantity SalesOrderLine.QuantityUnit SalesOrderLine.Quantity StoreOrderLine.Quantity NO
SalesOrderLineToStoreOrderLine MQuantityBase SalesOrderLine.Product.BaseMeasurementUnit SalesOrderLine.QuantityBase StoreOrderLine.QuantityBase NO

The lines of the new document are created based on the data for the Fulfilled Part of quantities by Store Orders has already been created (for more information, see topic Discrepancy System and Metrics). The new StoreOrderLine is created as follows:

StoreOrderLine.LineNo = SalesOrderLine.LineNo

StoreOrderLine.ParentLineId = SalesOrderLine.SalesOrderLineId

StoreOrderLine.Product = SalesOrderLine.Product

StoreOrderLine.StoreBin = SalesOrderLine.StoreBin

StoreOrderLine.SerialNumber = SalesOrderLine.SerialNumber

StoreOrderLine.Quantity = SalesOrderLine.REMAINING(MQuantity)

StoreOrderLine.QuantityUnit = SalesOrderLine.QuantityUnit

StoreOrderLine.QuantityBase = SalesOrderLine.REMAINING(MQuantityBase)

StoreOrderLine.StandardQuantityBase = SalesOrderLine.REMAINING(MStandardQuantityBase)

StoreOrderLine.Lot = SalesOrderLine.Lot

StoreOrderLine.GuaranteePeriodDays =

​          if SalesOrderLine.GuaranteePeriodDays.HasValue

​            then SalesOrderLine.GuaranteePeriodDays

​            else SalesOrderLine.Product.GuaranteePeriodDays

StoreOrderLine.SalesOrderLine = SalesOrderLine

StoreOrderLine.Notes = SalesOrderLine.Notes

StoreOrderLine.PersistLot = SalesOrderLine.PersistLot

StoreOrderLine.ProductVariant = SalesOrderLine.ProductVariant
StoreOrderLine.ParentDocument = SalesOrder

StoreOrderLine.ParentLineNo = SalesOrderLine.LineNo
Note

WARNING: Any of the Shipment Orders created according to the description above is saved then and only when there is at least one line in it.