Esempio n. 1
0
        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);
                }
            }
        }
Esempio n. 2
0
        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);
        }