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.