private static void StockTransactionSave() { string transDoc = "ES"; string transSerial = "1"; double partyID = 1; var Transaction = new S50cBL18.BSOStockTransaction(); var currency = APIEngine.SystemSettings.BaseCurrency; var NewTransDocNumber = APIEngine.DSOCache.DocumentProvider.GetNewDocNumber(transSerial, transDoc); //------------------------------------------------------------- // *** Header //------------------------------------------------------------- // Motor do documento Transaction.Transaction.TransDocType = DocumentTypeEnum.dcTypeStock; Transaction.Transaction.TransDocNumber = NewTransDocNumber.DocNumber; Transaction.PermissionsType = FrontOfficePermissionEnum.foPermByUser; //New Documento Transaction.InitNewTransaction(transDoc, transSerial); // Motor dos detalhes (linhas) var bsoStockTransDetail = new S50cBL18.BSOItemTransactionDetail(); bsoStockTransDetail.PermissionsType = FrontOfficePermissionEnum.foPermByUser; bsoStockTransDetail.TransactionType = Transaction.Transaction.TransDocType; bsoStockTransDetail.UserPermissions = APIEngine.SystemSettings.User; Transaction.BSOStockTransactionDetail = bsoStockTransDetail; // Transaction.PartyID = partyID; Transaction.TransactionTaxIncluded = true; Transaction.createDate = DateTime.Now; Transaction.CreateTime = new DateTime(DateTime.Now.TimeOfDay.Ticks); Transaction.ActualDeliveryDate = DateTime.Now; Transaction.PartyType = (short)S50cSys18.PartyTypeEnum.ptNothing; //igual a documento ja criado Transaction.BaseCurrency = currency.CurrencyID; Transaction.BaseCurrencyExchange = currency.BuyExchange; Transaction.Transaction.Comments = "Returnable Packaging"; //------------------------------------------------------------- // *** Header //------------------------------------------------------------- //------------------------------------------------------------- // *** DETAILS //------------------------------------------------------------- if (Transaction.Transaction.Details == null) { Transaction.Transaction.Details = new S50cBO18.ItemTransactionDetailList(); } //Add Linha 1 : 10 7upLitro var StockTransactionDetail = AddStockDetail(Transaction, 1, "7upLitro", 10); Transaction.AddDetail(StockTransactionDetail, false); //Add Linha 2 : 10 TARAS StockTransactionDetail = AddStockDetail(Transaction, 1, "TARAS", 10); Transaction.AddDetail(StockTransactionDetail, false); //------------------------------------------------------------- // *** DETAILS //------------------------------------------------------------- //*** SAVE DOCUMENT if (Transaction.Transaction.Details.Count > 0) { try { Transaction.Calculate(true, true, true); Transaction.SaveDocumentEx(true, false); //Console.Error.Write(Transaction.Transaction.TransactionID.ToString()); } catch (Exception ex) { Console.Error.Write(ex.Message); } } }
internal static S50cBO18.ItemTransactionDetail AddStockDetail(S50cBL18.BSOStockTransaction StockTransaction, short warehouseId, string itemId, double Quantity) { double unitPrice = APIEngine.DSOCache.ItemProvider.GetItemAverageCostPrice(itemId, StockTransaction.Transaction.BaseCurrency); var transDetail = new S50cBO18.ItemTransactionDetail(); transDetail.LineItemID = StockTransaction.Transaction.Details.Count + 1; transDetail.BaseCurrency = StockTransaction.Transaction.BaseCurrency; transDetail.CreateDate = StockTransaction.Transaction.CreateDate; transDetail.ActualDeliveryDate = StockTransaction.Transaction.ActualDeliveryDate; transDetail.PartyTypeCode = StockTransaction.Transaction.PartyTypeCode; transDetail.PartyID = StockTransaction.Transaction.PartyID; transDetail.WarehouseID = warehouseId; transDetail.WarehouseOutgoing = transDetail.WarehouseID; transDetail.WarehouseReceipt = transDetail.WarehouseID; transDetail.PhysicalQtyRule = StockQtyRuleEnum.stkQtyNone; var item = APIEngine.DSOCache.ItemProvider.GetItemForTransactionDetail(itemId, transDetail.BaseCurrency, "", true); if (item != null) { transDetail.ItemID = item.ItemID; transDetail.Description = item.Description; transDetail.TaxableGroupID = item.TaxableGroupID; transDetail.ItemType = item.ItemType; transDetail.FamilyID = item.Family.FamilyID; transDetail.UnitList = item.UnitList.Clone(); transDetail.WeightUnitOfMeasure = item.WeightUnitOfMeasure; transDetail.WeightMeasure = item.WeightMeasure; transDetail.Graduation = item.Graduation; transDetail.ItemTax = item.ItemTax; transDetail.ItemTax2 = item.ItemTax2; transDetail.ItemTax3 = item.ItemTax3; transDetail.PhysicalQtyRule = S50cSys18.StockQtyRuleEnum.stkQtyReceipt; transDetail.ProductCategory = item.ProductCategory; transDetail.ItemExtraInfo.ItemQuantityCalcFormula = item.ItemQuantityCalcFormula; if (item.UnitList.IsInCollection(transDetail.UnitOfSaleID)) { transDetail.UnitOfSaleID = transDetail.UnitOfSaleID; } else { transDetail.UnitOfSaleID = item.GetDefaultUnitForTransaction(StockTransaction.Transaction.TransDocType); } } transDetail.SetUnitOfSaleID(transDetail.UnitOfSaleID); transDetail.SetQuantity(Quantity); transDetail.QntyAvailableBalanceCount = Quantity; //transDetail.Quantity1 = 0; //transDetail.Quantity2 = 0; //transDetail.Quantity3 = 0; //transDetail.Quantity4 = 0; if (StockTransaction.TransactionTaxIncluded) { transDetail.TaxIncludedPrice = unitPrice; transDetail.UnitPrice = APIEngine.DSOCache.TaxesProvider.GetItemNetPrice( transDetail.TaxIncludedPrice, transDetail.TaxableGroupID, APIEngine.SystemSettings.SystemInfo.DefaultCountryID, APIEngine.SystemSettings.SystemInfo.TaxRegionID); } else { transDetail.UnitPrice = unitPrice; transDetail.TaxIncludedPrice = APIEngine.DSOCache.TaxesProvider.GetItemTaxIncludePrice( transDetail.UnitPrice, transDetail.TaxableGroupID, APIEngine.SystemSettings.SystemInfo.DefaultCountryID, APIEngine.SystemSettings.SystemInfo.TaxRegionID); } S50cUtil18.MathFunctions mathUtil = new S50cUtil18.MathFunctions(); if (transDetail.DiscountPercent == 0 && (transDetail.CumulativeDiscountPercent1 != 0 || transDetail.CumulativeDiscountPercent2 != 0 || transDetail.CumulativeDiscountPercent3 != 0)) { transDetail.DiscountPercent = mathUtil.GetCumulativeDiscount(transDetail.CumulativeDiscountPercent1, transDetail.CumulativeDiscountPercent2, transDetail.CumulativeDiscountPercent3); } if (transDetail.DiscountPercent != 0 && (transDetail.CumulativeDiscountPercent1 == 0 && transDetail.CumulativeDiscountPercent2 == 0 && transDetail.CumulativeDiscountPercent3 == 0)) { transDetail.CumulativeDiscountPercent1 = transDetail.DiscountPercent; } item = null; return(transDetail); }