/// <summary> /// Adiciona um detalhe (linha) à transação /// </summary> /// <param name="trans"></param> /// <param name="itemId"></param> /// <param name="qty"></param> /// <param name="unitOfMeasureId"></param> /// <param name="unitPrice"></param> /// <param name="taxPercent"></param> /// <param name="whareHouseId"></param> private ItemTransactionDetail TransAddDetail(ItemTransaction trans, Item item, double qty, string unitOfMeasureId, double unitPrice, double taxPercent, short whareHouseId, short colorId, short sizeId, string serialNumberPropId, string serialNumberPropValue, string lotId, string lotDescription, DateTime lotExpDate, short lotReturnWeek, short lotReturnYear, short lotEditionId) { var doc = MyApp.SystemSettings.WorkstationInfo.Document[trans.TransDocument]; ItemTransactionDetail transDetail = new ItemTransactionDetail(); transDetail.BaseCurrency = MyApp.SystemSettings.BaseCurrency; transDetail.ItemID = item.ItemID; transDetail.CreateDate = trans.CreateDate; transDetail.CreateTime = trans.CreateTime; transDetail.ActualDeliveryDate = trans.CreateDate; //Utilizar a descrição do artigo, ou uma descrição personalizada transDetail.Description = item.Description; // definir a quantidade transDetail.Quantity = qty; // Preço unitário. NOTA: Ver a diferença se o documento for com impostos incluidos! if (trans.TransactionTaxIncluded) transDetail.TaxIncludedPrice = unitPrice; else transDetail.UnitPrice = unitPrice; // Definir a lista de unidades transDetail.UnitList = item.UnitList; // Definir a unidade de venda/compra transDetail.SetUnitOfSaleID(unitOfMeasureId); //Definir os impostos short TaxGroupId = MyApp.DSOCache.TaxesProvider.GetTaxableGroupIDFromTaxRate(taxPercent, MyApp.SystemSettings.SystemInfo.DefaultCountryID, MyApp.SystemSettings.SystemInfo.TaxRegionID); transDetail.TaxableGroupID = TaxGroupId; //*** Uncomment for discout //transDetail.DiscountPercent = 10 // // Se o Armazém não existir, utilizar o default que se encontra no documento. if (MyApp.DSOCache.WarehouseProvider.WarehouseExists(whareHouseId)) transDetail.WarehouseID = whareHouseId; else transDetail.WarehouseID = doc.Defaults.Warehouse; // Identificador da linha transDetail.LineItemID = trans.Details.Count + 1; // //*** Uncomment to provide line totals //.TotalGrossAmount = 'Line Gross amount //.TotalNetAmount = 'Net Gross amount // //Definir o último preço de compra if (doc.TransDocType == DocumentTypeEnum.dcTypePurchase) { transDetail.ItemExtraInfo.ItemLastCostTaxIncludedPrice = item.SalePrice[0].TaxIncludedPrice; transDetail.ItemExtraInfo.ItemLastCostUnitPrice = item.SalePrice[0].UnitPrice; } item = null; return transDetail; }
void HeaderEvents_OnMenuItem(object Sender, ExtenderEventArgs e) { var menuId = (string)e.get_data(); var rnd = new Random(); switch (menuId) { case "mniXTrans1": //System.Windows.Forms.MessageBox.Show("YAY"); double qty = rnd.Next(1, 10) + (double)rnd.Next(0, 99) / 100; double unitPrice = rnd.Next(1, 100) + (double)rnd.Next(0, 99) / 100; var item = APIEngine.DSOCache.ItemProvider.GetItem("aaa", APIEngine.SystemSettings.BaseCurrency); if (item != null) { var detail = new ItemTransactionDetail() { LineItemID = bsoItemTrans.Transaction.Details.Count + 1, ItemID = item.ItemID, Description = item.Description }; if (bsoItemTrans.Transaction.TransactionTaxIncluded) { detail.TaxIncludedPrice = unitPrice; } else { detail.UnitPrice = unitPrice; } detail.SetUnitOfSaleID(item.UnitOfSaleID); detail.SetQuantity(qty); detail.TaxableGroupID = item.TaxableGroupID; //var detail = TransAddDetail(bsoItemTrans.Transaction, item, qty, "UNI", unitPrice, 23, 1, 0, 0, string.Empty, string.Empty, string.Empty, string.Empty, DateTime.Now, 0, 0, 0); // IMPORTANTE: Mandar calcular a linha! bsoItemTrans.BSOItemTransactionDetail.Calculate(detail); // Adicionar à venda bsoItemTrans.AddDetail(detail); } break; case "XFunctionA": MessageBox.Show("Your function here..."); break; case "XPosDisplay": SendMessageToCustomerDisplay(); break; } }
private void TransAddDetail(ItemTransaction trans, Item item, double qty, string unitOfMeasureId, double unitPrice, double taxPercent, short whareHouseId) { ItemTransactionDetail transDetail = new ItemTransactionDetail(); transDetail.BaseCurrency = systemSettings.BaseCurrency; transDetail.ItemID = item.ItemID; transDetail.CreateDate = trans.CreateDate; transDetail.CreateTime = trans.CreateTime; transDetail.ActualDeliveryDate = trans.CreateDate; //Utilizar a descrição do artigo, ou uma descrição personalizada transDetail.Description = item.Description; // definir a quantidade transDetail.Quantity = qty; // Preço unitário. NOTA: Ver a diferença se o documento for com impostos incluidos! if (trans.TransactionTaxIncluded) { transDetail.TaxIncludedPrice = unitPrice; } else { transDetail.UnitPrice = unitPrice; } // Definir a lista de unidades transDetail.UnitList = item.UnitList; // Definir a unidade de venda/compra transDetail.SetUnitOfSaleID(unitOfMeasureId); //Definir os impostos short TaxGroupId = dsoCache.TaxesProvider.GetTaxableGroupIDFromTaxRate(taxPercent, systemSettings.SystemInfo.DefaultCountryID, systemSettings.SystemInfo.TaxRegionID); transDetail.TaxableGroupID = TaxGroupId; //armazém transDetail.WarehouseID = whareHouseId; // Identificador da linha transDetail.LineItemID = trans.Details.Count + 1; item = null; trans.Details.Add(transDetail); }
/// <summary> /// Adiciona um detalhe (linha) à transação /// </summary> /// <param name="trans"></param> /// <param name="itemId"></param> /// <param name="qty"></param> /// <param name="unitOfMeasureId"></param> /// <param name="unitPrice"></param> /// <param name="taxPercent"></param> /// <param name="whareHouseId"></param> private ItemTransactionDetail TransAddDetail(ItemTransaction trans, Item item, double qty, string unitOfMeasureId, double unitPrice, double taxPercent, short whareHouseId, short colorId, short sizeId, string serialNumberPropId, string serialNumberPropValue, string lotId, string lotDescription, DateTime lotExpDate, short lotReturnWeek, short lotReturnYear, short lotEditionId) { var doc = APIEngine.SystemSettings.WorkstationInfo.Document[trans.TransDocument]; ItemTransactionDetail transDetail = new ItemTransactionDetail(); transDetail.BaseCurrency = APIEngine.SystemSettings.BaseCurrency; transDetail.ItemID = item.ItemID; transDetail.CreateDate = trans.CreateDate; transDetail.CreateTime = trans.CreateTime; transDetail.ActualDeliveryDate = trans.CreateDate; //Utilizar a descrição do artigo, ou uma descrição personalizada transDetail.Description = item.Description; // definir a quantidade transDetail.Quantity = qty; // Preço unitário. NOTA: Ver a diferença se o documento for com impostos incluidos! if (trans.TransactionTaxIncluded) { transDetail.TaxIncludedPrice = unitPrice; } else { transDetail.UnitPrice = unitPrice; } // Definir a lista de unidades transDetail.UnitList = item.UnitList; // Definir a unidade de venda/compra transDetail.SetUnitOfSaleID(unitOfMeasureId); //Definir os impostos short TaxGroupId = APIEngine.DSOCache.TaxesProvider.GetTaxableGroupIDFromTaxRate(taxPercent, APIEngine.SystemSettings.SystemInfo.DefaultCountryID, APIEngine.SystemSettings.SystemInfo.TaxRegionID); transDetail.TaxableGroupID = TaxGroupId; //*** Uncomment for discout //transDetail.DiscountPercent = 10 // // Se o Armazém não existir, utilizar o default que se encontra no documento. if (APIEngine.DSOCache.WarehouseProvider.WarehouseExists(whareHouseId)) { transDetail.WarehouseID = whareHouseId; } else { transDetail.WarehouseID = doc.Defaults.Warehouse; } // Identificador da linha transDetail.LineItemID = trans.Details.Count + 1; // //*** Uncomment to provide line totals //.TotalGrossAmount = 'Line Gross amount //.TotalNetAmount = 'Net Gross amount // //Definir o último preço de compra if (doc.TransDocType == DocumentTypeEnum.dcTypePurchase) { transDetail.ItemExtraInfo.ItemLastCostTaxIncludedPrice = item.SalePrice[0].TaxIncludedPrice; transDetail.ItemExtraInfo.ItemLastCostUnitPrice = item.SalePrice[0].UnitPrice; } //// Cores e tamanhos //if (APIEngine.SystemSettings.SystemInfo.UseColorSizeItems ) { // // Cores // if (item.Colors.Count > 0) { // ItemColor color = null; // if (colorId > 0 && item.Colors.IsInCollection(colorId)) { // color = item.Colors[ref colorId]; // } // if (color == null) { // throw new Exception(string.Format("A cor indicada [{0}] não existe.", colorId)); // } // transDetail.Color.ColorID = colorId; // transDetail.Color.Description = color.ColorName; // transDetail.Color.ColorKey = color.ColorKey; // transDetail.Color.ColorCode = color.ColorCode; // } // //Tamanhos // if (item.Sizes.Count > 0 ) { // ItemSize size = null; // if (sizeId > 0 && item.Sizes.IsInCollection(sizeId)) { // size = item.Sizes[sizeId]; // } // if (size == null) { // throw new Exception(string.Format("O tamanho indicado [{0}] não existe.", sizeId)); // } // transDetail.Size.Description = size.SizeName; // transDetail.Size.SizeID = size.SizeID; // transDetail.Size.SizeKey = size.SizeKey; // } //} // //// Lotes - Edições //// Verificar se estão ativados no sistema e se foram marcados no documento //if (APIEngine.SystemSettings.SystemInfo.UseKiosksItems // && (item.ItemType == ItemTypeEnum.itmLot || item.ItemType == ItemTypeEnum.itmEdition)) { // ItemLot lot = null; // if (item.LotList.Count > 0) { // // Validar se existe a Edição // // NOTA: Numa venda vamos sempre assumir que o lote registado na BD é que contém toda a informação relevante como a Validade, Semana e ano de decolução, etc... // // Vamos procurar pelo lote + edição // lot = null; // foreach (ItemLot tempLot in item.LotList) { // if (tempLot.LotID == lotId && tempLot.EditionID == lotEditionId) { // lot = tempLot; // break; // } // } // } // // Se for uma compra adicionamos o lote // if (lot == null && doc.TransDocType == DocumentTypeEnum.dcTypePurchase && doc.SignPurchaseReport == "+") { // // Adicionar ume novo... // lot = new ItemLot(); // lot.EditionID = lotEditionId; // lot.ItemID = item.ItemID; // lot.LotID = lotId; // lot.ExpirationDate = lotExpDate; // lot.ReturnWeek = lotReturnWeek; // lot.ReturnYear = lotReturnYear; // lot.ItemLotDescription = item.Description; // lot.SupplierItemID = APIEngine.DSOCache.ItemProvider.GetItemSupplierID(item.ItemID, item.SupplierID); // } // if (lot == null) { // throw new Exception(string.Format("O lote [{0}], Edição [{1}] não existe.", lotId, lotEditionId)); // } // transDetail.Lot.BarCode = lot.BarCode; // transDetail.Lot.EditionID = lot.EditionID; // transDetail.Lot.EffectiveDate = lot.EffectiveDate; // transDetail.Lot.ExpirationDate = lot.ExpirationDate; // transDetail.Lot.ItemID = lot.ItemID; // transDetail.Lot.ItemLotDescription = lot.ItemLotDescription; // transDetail.Lot.LotID = lot.LotID; // transDetail.Lot.ReturnWeek = lot.ReturnWeek; // transDetail.Lot.ReturnYear = lot.ReturnYear; // transDetail.Lot.SalePrice = lot.SalePrice; // transDetail.Lot.SaveSalePrice = lot.SaveSalePrice; // transDetail.Lot.SupplierItemID = lot.SupplierItemID; //} // //// Propriedades (números de série e lotes) //// ATENÇÃO: As regras de verificação das propriedades não estão implementadas na API. Deve ser a aplicação a fazer todas as validações necessárias //// Como por exemplo a movimentação duplicada de números de série //// Verificar se estão ativadas no sistema e se foram marcadas no documento //if (APIEngine.SystemSettings.SystemInfo.UsePropertyItems ) { // // O Artigo tem propriedades ? // if (item.PropertyEnabled) { // // NOTA: Para o exemplo atual apenas queremos uma propriedade definida no artigo com o ID1 = "NS". // // Para outras propriedades e combinações, o código deve ser alterado em conformidade. // if (item.PropertyID1.Equals("NS", StringComparison.CurrentCultureIgnoreCase)) { // transDetail.ItemProperties.ResetValues(); // transDetail.ItemProperties.PropertyID1 = item.PropertyID1; // transDetail.ItemProperties.PropertyID2 = item.PropertyID2; // transDetail.ItemProperties.PropertyID3 = item.PropertyID3; // transDetail.ItemProperties.ControlMode = item.PropertyControlMode; // transDetail.ItemProperties.ControlType = item.PropertyControlType; // transDetail.ItemProperties.UseExpirationDate = item.PropertyUseExpirationDate; // transDetail.ItemProperties.UseProductionDate = item.PropertyUseProductionDate; // transDetail.ItemProperties.ExpirationDateControl = item.PropertyExpirationDateControl; // transDetail.ItemProperties.MaximumQuantity = item.PropertyMaximumQuantity; // transDetail.ItemProperties.UsePriceOnProp1 = item.UsePriceOnProp1; // transDetail.ItemProperties.UsePriceOnProp2 = item.UsePriceOnProp2; // transDetail.ItemProperties.UsePriceOnProp3 = item.UsePriceOnProp3; // // // transDetail.ItemProperties.PropertyValue1 = serialNumberPropValue; // } // } //} item = null; // return(transDetail); }