public static double CheckPrice(string ItemID)
        {
            double price = 0;

            APIEngine.SystemSettings.StartUpInfo.CacheDiscountPlan = false;

            // Simulate by creating a "dummy" transaction

            var bsoItemTransactionDetail = new BSOItemTransactionDetail();
            var bsoItemTransaction       = new BSOItemTransaction();

            if (!string.IsNullOrEmpty(APIEngine.SystemSettings.QuickSearchDefaults.DefaultTransDocumentID))
            {
                bsoItemTransaction.TransactionType = DocumentTypeEnum.dcTypeSale;
                bsoItemTransaction.InitNewTransaction(APIEngine.SystemSettings.QuickSearchDefaults.DefaultTransDocumentID,
                                                      APIEngine.SystemSettings.WorkstationInfo.DefaultTransSerial,
                                                      false, false, true, false);
                bsoItemTransaction.TransactionTaxIncluded = true;
            }

            bsoItemTransactionDetail.InitNewTransaction();
            var defaultDoc = APIEngine.SystemSettings.QuickSearchDefaults.DefaultTransDocumentID;

            if (APIEngine.SystemSettings.WorkstationInfo.Document.IsInCollection(defaultDoc))
            {
                var document = APIEngine.SystemSettings.WorkstationInfo.Document[defaultDoc];
                bsoItemTransactionDetail.TransactionDocument            = document;
                bsoItemTransactionDetail.UserPermissions                = APIEngine.SystemSettings.User;
                bsoItemTransactionDetail.BaseCurrency                   = APIEngine.SystemSettings.BaseCurrency;
                bsoItemTransactionDetail.TransactionDetail.BaseCurrency = APIEngine.SystemSettings.BaseCurrency;
                bsoItemTransactionDetail.createDate = DateTime.Now.Date;
                bsoItemTransactionDetail.CreateTime = new DateTime(DateTime.Now.TimeOfDay.Ticks);
                bsoItemTransactionDetail.SetTransactionTaxIncluded(true);
                bsoItemTransactionDetail.TransactionType = DocumentTypeEnum.dcTypeSale;
                bsoItemTransactionDetail.Reset();
                bsoItemTransactionDetail.BaseCurrency = APIEngine.SystemSettings.BaseCurrency;

                // Ensure it's empty and with defaults
                bsoItemTransaction.AbortTransaction();

                // Set the desired priceline (may not be necessary)
                bsoItemTransactionDetail.PartyPriceLineID = 1;
                //
                // Call HandleItemDetail to fill the detail with default information for the Item
                if (bsoItemTransactionDetail.HandleItemDetail(ItemID, TransDocFieldIDEnum.fldItemID, true))
                {
                    if (!string.IsNullOrEmpty(bsoItemTransactionDetail.TransactionDetail.ItemID))
                    {
                        // Add the detail and calculate the line
                        // Expect warning messages in the DataManager Events
                        bsoItemTransaction.AddDetail(bsoItemTransactionDetail.TransactionDetail);
                        // Ensurea all promotions are applied
                        APIEngine.DiscountManager.ApplyTransactionDiscounts(bsoItemTransactionDetail);      //Aplica Mix-and-Match e/ou descontos que só são aplicados com F10
                                                                                                            // Get your price
                        price = bsoItemTransactionDetail.TransactionDetail.TotalTaxIncludedAmount;
                    }
                }
            }
            return(price);
        }
示例#2
0
        private double CheckPrice(string ItemID)
        {
            double price = 0;

            APIEngine.SystemSettings.StartUpInfo.CacheDiscountPlan = false;

            var bsoItemTransactionDetail = new BSOItemTransactionDetail();
            var bsoItemTransaction       = new BSOItemTransaction();

            if (!string.IsNullOrEmpty(APIEngine.SystemSettings.QuickSearchDefaults.DefaultTransDocumentID))
            {
                bsoItemTransaction.TransactionType = DocumentTypeEnum.dcTypeSale;
                bsoItemTransaction.InitNewTransaction(APIEngine.SystemSettings.QuickSearchDefaults.DefaultTransDocumentID,
                                                      APIEngine.SystemSettings.WorkstationInfo.DefaultTransSerial,
                                                      false, false, true, false);
                bsoItemTransaction.TransactionTaxIncluded = true;
            }

            bsoItemTransactionDetail.InitNewTransaction();
            var document = APIEngine.SystemSettings.WorkstationInfo.Document[APIEngine.SystemSettings.QuickSearchDefaults.DefaultTransDocumentID];

            bsoItemTransactionDetail.TransactionDocument            = document;
            bsoItemTransactionDetail.UserPermissions                = APIEngine.SystemSettings.User;
            bsoItemTransactionDetail.BaseCurrency                   = APIEngine.SystemSettings.BaseCurrency;
            bsoItemTransactionDetail.TransactionDetail.BaseCurrency = APIEngine.SystemSettings.BaseCurrency;
            bsoItemTransactionDetail.createDate = DateTime.Now.Date;
            bsoItemTransactionDetail.CreateTime = new DateTime(DateTime.Now.TimeOfDay.Ticks);
            bsoItemTransactionDetail.SetTransactionTaxIncluded(true);
            bsoItemTransactionDetail.TransactionType = DocumentTypeEnum.dcTypeSale;
            bsoItemTransactionDetail.Reset();

            bsoItemTransaction.AbortTransaction();

            bsoItemTransactionDetail.PartyPriceLineID = 1;  // Linha de preço do cliente
            if (bsoItemTransactionDetail.HandleItemDetail(ItemID, TransDocFieldIDEnum.fldItemID, true))
            {
                if (!string.IsNullOrEmpty(bsoItemTransactionDetail.TransactionDetail.ItemID))
                {
                    bsoItemTransaction.AddDetail(bsoItemTransactionDetail.TransactionDetail);
                    APIEngine.DiscountManager.ApplyTransactionDiscounts(bsoItemTransactionDetail);      //Aplica Mix-and-Match e/ou descontos que só são aplicados com F10
                    price = bsoItemTransactionDetail.TransactionDetail.TotalTaxIncludedAmount;
                }
            }
            return(price);
        }
示例#3
0
文件: Form1.cs 项目: fcvmv/50c-API
        private TransactionID TransactionUpdate(string transSerial, string transDoc, double transDocNumber)
        {
            TransactionID insertedTrans = null;

            try {
                transactionError = false;

                // Motor do documento
                BSOItemTransaction bsoItemTransaction = null;
                bsoItemTransaction = new BSOItemTransaction();
                bsoItemTransaction.UserPermissions = systemSettings.User;
                bsoItemTransaction.TransactionType = DocumentTypeEnum.dcTypeSale; //Tipo de documento para cabeçalho --> vendas
                // Motor dos detalhes (linhas)
                BSOItemTransactionDetail bsoItemTransDetail = null;
                bsoItemTransDetail = new BSOItemTransactionDetail();              //**
                bsoItemTransDetail.TransactionType = DocumentTypeEnum.dcTypeSale; //Tipo de documento para linhas --> vendas
                // Utilizador e permissões
                bsoItemTransDetail.UserPermissions = systemSettings.User;
                bsoItemTransDetail.PermissionsType = FrontOfficePermissionEnum.foPermByUser;

                bsoItemTransaction.BSOItemTransactionDetail = bsoItemTransDetail; //Adicionar os detalhes ao documento
                bsoItemTransDetail = null;
                //Inicializar uma transação

                bsoItemTransaction.Transaction = new ItemTransaction();

                bsoItemTransaction.InitNewTransaction(transDoc, transSerial);
                if (transDocNumber > 0)
                {
                    bsoItemTransaction.Transaction.TransDocNumber = transDocNumber;
                }

                //Terceiro
                double partyId = 0;
                double.TryParse(txtTransPartyId.Text, out partyId);
                bsoItemTransaction.PartyID = partyId;

                ItemTransaction trans = bsoItemTransaction.Transaction;
                if (trans == null)
                {
                    throw new Exception(string.Format("Não foi possivel inicializar o documento [{0}] da série [{1}]", transDoc, transSerial));
                }
                //
                // Limpar todas as linhas
                int i = 1;
                while (trans.Details.Count > 0)
                {
                    trans.Details.Remove(ref i);
                }

                //Set Create date and deliverydate
                var createDate = DateTime.Today;
                DateTime.TryParse(txtTransDate.Text, out createDate);
                trans.CreateDate         = createDate;
                trans.ActualDeliveryDate = createDate;
                //
                // Definir se o imposto é incluido
                trans.TransactionTaxIncluded = chkTransTaxIncluded.Checked;
                //
                // Definir o pagamento. Neste caso optou-se por utilizar o primeiro pagamento disponivel na base de dados
                short PaymentId = dsoCache.PaymentProvider.GetFirstID();
                trans.Payment = dsoCache.PaymentProvider.GetPayment(PaymentId);
                //
                // Comentários / Observações
                trans.Comments = "Gerado por " + Application.ProductName;
                // desconto global
                double globalDiscount = 0;
                double.TryParse(txtTransGlobalDiscount.Text, out globalDiscount);
                trans.PaymentCumulativeDiscountPercent1 = globalDiscount;
                //
                //-------------------------------------------------------------------------
                // DOCUMENT DETAILS
                //-------------------------------------------------------------------------

                //
                //Adicionar a primeira linha ao documento
                double qty         = 0; double.TryParse(txtTransQuantityL1.Text, out qty);
                double unitPrice   = 0; double.TryParse(txtTransUnitPriceL1.Text, out unitPrice);
                double taxPercent  = 0; double.TryParse(txtTransTaxRateL1.Text, out taxPercent);
                short  wareHouseId = 0; short.TryParse(txtTransWarehouseL1.Text, out wareHouseId);
                Item   item        = dsoCache.ItemProvider.GetItem(txtTransItemL1.Text, systemSettings.BaseCurrency);

                TransAddDetail(trans, item, qty, txtTransUnL1.Text, unitPrice, taxPercent, wareHouseId);//, colorId, sizeId, "", serialNumber, lotId, lotDescription, lotExpDate, 0, lotRetYear, lotEditionId);
                //


                if (chkDocExtraField1.Checked == true || chkDocExtraField2.Checked == true)
                {
                    var ExtraFiedsDocument = new ExtraFieldList();

                    if (chkDocExtraField1.Checked == true)
                    {
                        ExtraField extraField1 = new ExtraField();

                        extraField1.ExtraFieldID = 1; //nº do campo extra
                        extraField1.TextAnswer   = txtNomeMotorista.Text;
                        int idadeMotorista = 0;
                        int.TryParse(txtIdadeMotorista.Text, out idadeMotorista);
                        extraField1.NumberAnswer   = idadeMotorista;
                        extraField1.TransDocNumber = transDocNumber;
                        extraField1.TransSerial    = transSerial;
                        extraField1.TransDocument  = transDoc;
                        ExtraFiedsDocument.Add(extraField1);
                    }

                    if (chkDocExtraField2.Checked == true)
                    {
                        ExtraField extraField2 = new ExtraField();

                        extraField2.ExtraFieldID   = 2; //nº do campo extra
                        extraField2.TextAnswer     = txtEstadoMaterial.Text;
                        extraField2.BooleanAnswer  = chkGarantia.Checked;
                        extraField2.TransDocNumber = transDocNumber;
                        extraField2.TransSerial    = transSerial;
                        extraField2.TransDocument  = transDoc;
                        ExtraFiedsDocument.Add(extraField2);
                    }

                    bsoItemTransaction.ExtraFields = ExtraFiedsDocument;
                }

                bsoItemTransaction.Calculate(true);

                bsoItemTransaction.SaveDocument(false, false);

                if (!transactionError)
                {
                    insertedTrans = bsoItemTransaction.Transaction.TransactionID;
                }

                bsoItemTransDetail = null;
            }
            catch (Exception ex) {
                MessageBox.Show(ex.ToString(), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }


            return(insertedTrans);
        }
        private TransactionID CreateNewDocumentTDE(string transSerial, Int16 wareHouseID, string transDoc, double discountAmount, double partyID, double salesmanID, bool newTransaction)
        {
            TransactionID insertedTrans = null;

            BSOItemTransaction bsoItemTransaction = null;
            //Inicialiizar o motor do documentos de venda
            bsoItemTransaction = new BSOItemTransaction();
            bsoItemTransaction.UserPermissions = MyApp.SystemSettings.User;


            try
            {
                BSOItemTransactionDetail BSOItemTransDetail = null;
                //'-------------------------------------------------------------------------
                //' DOCUMENT HEADER and initialization
                //'-------------------------------------------------------------------------
                //'*** Total source document amount. Save to verify at the end if an adjustment is necessary
                //'OriginalDocTotalAmount = 10
                //'
                // Documento
                if (!MyApp.SystemSettings.WorkstationInfo.Document.IsInCollection(transDoc))
                {
                    throw new Exception("O documento não se encontra preenchido ou não existe");
                }
                Document doc = MyApp.SystemSettings.WorkstationInfo.Document[transDoc];
                // Série
                if (!MyApp.SystemSettings.DocumentSeries.IsInCollection(transSerial))
                {
                    throw new Exception("A série não se encontra preenchida ou não existe");
                }
                DocumentsSeries series = MyApp.SystemSettings.DocumentSeries[transSerial];
                //if (series.SeriesType != SeriesTypeEnum.SeriesExternal) {
                //    throw new Exception("Para lançamentos de documentos externos à aplicação apenas são permitidas séries externas.");
                //}
                //
                var transType = DocumentTypeEnum.dcTypeSale;

                //
                // Motor do documento
                bsoItemTransaction.TransactionType = transType;
                // Motor dos detalhes (linhas)
                BSOItemTransDetail = new BSOItemTransactionDetail();
                BSOItemTransDetail.TransactionType = transType;
                // Utilizador e permissões
                BSOItemTransDetail.UserPermissions = MyApp.SystemSettings.User;
                BSOItemTransDetail.PermissionsType = FrontOfficePermissionEnum.foPermByUser;
                //
                bsoItemTransaction.BSOItemTransactionDetail = BSOItemTransDetail;
                BSOItemTransDetail = null;

                //
                //Inicializar uma transação
                bsoItemTransaction.Transaction = new ItemTransaction();
                if (newTransaction)
                {
                    bsoItemTransaction.InitNewTransaction(transDoc, transSerial);

                    bsoItemTransaction.UserPermissions = MyApp.SystemSettings.User;

                    ItemTransaction trans = bsoItemTransaction.Transaction;
                    if (trans == null)
                    {
                        if (newTransaction)
                        {
                            throw new Exception(string.Format("Não foi possivel inicializar o documento [{0}] da série [{1}]", transDoc, transSerial));
                        }
                        else
                        {
                            throw new Exception(string.Format("Não foi possivel carregar o documento [{0}] da série [{1}] número [{2}]", transDoc, transSerial));
                        }
                    }
                    //
                    // Limpar todas as linhas
                    int i = 1;
                    while (trans.Details.Count > 0)
                    {
                        trans.Details.Remove(ref i);
                    }
                    //
                    // Definir o terceiro (cliente ou fronecedor)
                    bsoItemTransaction.PartyID = partyID;
                    bsoItemTransaction.DefaultWarehouse = wareHouseID;
                    //
                    //Descomentar para indicar uma referência externa ao documento:
                    //trans.ContractReferenceNumber = ExternalDocId;
                    //
                    //Set Create date and deliverydate
                    var createDate = DateTime.Today;
                    trans.CreateDate = createDate;
                    trans.ActualDeliveryDate = createDate;
                    //
                    // Definir se o imposto é incluido
                    trans.TransactionTaxIncluded = true;
                    //
                    // Definir o pagamento. Neste caso optou-se por utilizar o primeiro pagamento disponivel na base de dados
                    short PaymentId = MyApp.DSOCache.PaymentProvider.GetFirstID();
                    trans.Payment = MyApp.DSOCache.PaymentProvider.GetPayment(PaymentId);
                    //
                    // Comentários / Observações
                    trans.Comments = "Comentários aqui!";
                    //
                    // Salesman
                    trans.Salesman.SalesmanID = salesmanID;

                    //
                    //-------------------------------------------------------------------------
                    // DOCUMENT DETAILS
                    //-------------------------------------------------------------------------
                    //
                    //Adicionar a primeira linha ao documento
                    double qty = 1;
                    double unitPrice = discountAmount;
                    double taxPercent = 23;
                    Item item = MyApp.DSOCache.ItemProvider.GetItem("Points", MyApp.SystemSettings.BaseCurrency);

                    if (item == null)
                    {
                        item = CreateItemPointsForTDE();
                    }

                    //
                    TransAddDetail(trans, item, "Promoção especial API Sage Retail", qty, "Uni", unitPrice, taxPercent, wareHouseID);


                    // Desconto Global -- Atribuir só no fim do documento depois de adicionadas todas as linhas
                    double globalDiscount = 0;
                    //double.TryParse(txtTransGlobalDiscount.Text, out globalDiscount);
                    bsoItemTransaction.PaymentDiscountPercent1 = globalDiscount;

                    //Calcular todo o documento
                    bsoItemTransaction.Calculate(true, true);
                    //
                    bsoItemTransaction.SaveDocument(false, false);

                    insertedTrans = bsoItemTransaction.Transaction.TransactionID;
                    //
                    BSOItemTransDetail = null;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }


            return insertedTrans;
        }
示例#5
0
        public static void SetTransactionTaxIncluded(this BSOItemTransactionDetail BSOTransDetail, bool Value)
        {
            var tdProp = TypeDescriptor.GetProperties(BSOTransDetail).Find("TransactionTaxIncluded", true);

            tdProp?.SetValue(BSOTransDetail, Value);
        }