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); }
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); }
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; }
public static void SetTransactionTaxIncluded(this BSOItemTransactionDetail BSOTransDetail, bool Value) { var tdProp = TypeDescriptor.GetProperties(BSOTransDetail).Find("TransactionTaxIncluded", true); tdProp?.SetValue(BSOTransDetail, Value); }