//switch (e.get_data().ToString().ToLower()) {
        //    case "lepeso":
        //        if (bsoItemTrans.BSOItemTransactionDetail != null) {
        //            bsoItemTrans.BSOItemTransactionDetail.HandleItemDetail("9.99", TransDocFieldIDEnum.fldQuantity);

        //            e.result.Success = true;
        //            e.result.ResultMessage = string.Empty;
        //        }
        //        else {
        //            e.result.Success = false;
        //            e.result.ResultMessage = "Não foi posivel obter o controlador da linha (BSOItemTransactionDetail)";
        //        }
        //        break;
        //}
        //}

        #endregion


        /// <summary>
        /// EXEMPLO DE VALIDAÇÃO NA LINHA
        /// </summary>
        /// <param name="Sender"></param>
        /// <param name="e"></param>
        void DetailEvents_OnValidating(object Sender, ExtenderEventArgs e)
        {
            ExtendedPropertyList  properties            = (ExtendedPropertyList)e.get_data();
            ItemTransactionDetail itemTransactionDetail = (ItemTransactionDetail)properties.get_Value("Data");
            string errorMessage = string.Empty;

            //Navigate home
            bsoItemTrans.ExecuteFunction("GOTOPAGE", "-1");

            //TODO:
            //Insert line handling code HERE
            //------------------------------
            //if (itemTransactionDetail.UnitOfSaleID.Equals("kg", StringComparison.CurrentCultureIgnoreCase)) {
            //    itemTransactionDetail.Quantity = 9.99;
            //}
            //------------------------------

            //if (itemTransactionDetail.Quantity > 100) {
            //    e.result.Success = false;
            //    e.result.R    esultMessage = string.Format("Atenção! Quantidade {0} superior ao permitido", itemTransactionDetail.Quantity);
            //}
            //else {
            //    e.result.Success = true;
            //    e.result.ResultMessage = string.Empty;
            //}

            //// Uncomment to force a taxable group. In this case, it is necessary to recalculate all the detail
            //itemTransactionDetail.TaxableGroupID = 3;
            //bsoItemTrans.BSOItemTransactionDetail.Calculate(itemTransactionDetail);

            properties            = null;
            itemTransactionDetail = null;
        }
        /// <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;
        }
        //switch (e.get_data().ToString().ToLower()) {
        //    case "lepeso":
        //        if (bsoItemTrans.BSOItemTransactionDetail != null) {
        //            bsoItemTrans.BSOItemTransactionDetail.HandleItemDetail("9.99", TransDocFieldIDEnum.fldQuantity);

        //            e.result.Success = true;
        //            e.result.ResultMessage = string.Empty;
        //        }
        //        else {
        //            e.result.Success = false;
        //            e.result.ResultMessage = "Não foi posivel obter o controlador da linha (BSOItemTransactionDetail)";
        //        }
        //        break;
        //}
        //}

        #endregion


        /// <summary>
        /// EXEMPLO DE VALIDAÇÃO NA LINHA   
        /// </summary>
        /// <param name="Sender"></param>
        /// <param name="e"></param>
        void DetailEvents_OnValidating(object Sender, ExtenderEventArgs e)
        {
            ExtendedPropertyList properties = (ExtendedPropertyList)e.get_data();
            ItemTransactionDetail itemTransactionDetail = (ItemTransactionDetail)properties.get_Value("Data");
            string errorMessage = string.Empty;

            var mainProvider = MyApp.DataManager.MainProvider;
            double priceWithDiscount = 0;

            try
            {
                string query = string.Format("Select PriceWithDiscount from UXDiscounColorAndSize Where ItemID='{0}' and SizeId={1} and ColorID={2}",
                                            itemTransactionDetail.ItemID, itemTransactionDetail.Size.SizeID, itemTransactionDetail.Color.ColorID);
                priceWithDiscount = Convert.ToDouble(mainProvider.ExecuteScalar(query));
            }
            catch (Exception ex)
            {
                string tableToCreateInSQL = string.Format("CREATE TABLE [dbo].[UXDiscounColorAndSize]([ItemID] [nvarchar](25) NOT NULL, [SizeID] [int] NOT NULL, [ColorID] [int] NOT NULL, [PriceWithDiscount] [float] NOT NULL ) ON [PRIMARY]", Environment.NewLine);
                MessageBox.Show(String.Format("{0}{1}{1}{1}Crie uma tabela no SQL com a seguinte informação:{1}{1}{2}", ex.Message.ToString(), Environment.NewLine, tableToCreateInSQL), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                priceWithDiscount = 0;
            }

            if (priceWithDiscount != 0)
            {
                itemTransactionDetail.TaxIncludedPrice = priceWithDiscount;
                bsoItemTrans.BSOItemTransactionDetail.Calculate(itemTransactionDetail);
            }


            //TODO:
            //Insert line handling code HERE
            //------------------------------
            //if (itemTransactionDetail.UnitOfSaleID.Equals("kg", StringComparison.CurrentCultureIgnoreCase)) {
            //    itemTransactionDetail.Quantity = 9.99;
            //}
            //------------------------------

            //if (itemTransactionDetail.Quantity > 100) {
            //    e.result.Success = false;
            //    e.result.R    esultMessage = string.Format("Atenção! Quantidade {0} superior ao permitido", itemTransactionDetail.Quantity);
            //}
            //else {
            //    e.result.Success = true;
            //    e.result.ResultMessage = string.Empty;
            //}

            // When forcing a taxable group,
            // it is necessary to recalculate all the detail
            //itemTransactionDetail.TaxableGroupID = 3;
            //bsoItemTrans.BSOItemTransactionDetail.Calculate(itemTransactionDetail);

            properties = null;
            itemTransactionDetail = null;
        }
        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;
            }
        }
Exemple #5
0
        internal static double CalculateQuantity(string strFormula, ItemTransactionDetail TransactionDetail, bool UseQuantityFactor)
        {
            MathFunctions       mathUtil = new MathFunctions();
            UnitOfMeasure       oUnit;
            BSOExpressionParser objBSOExpressionParser = new BSOExpressionParser();
            double result = 0;

            if (!string.IsNullOrEmpty(strFormula))
            {
                result = 0;
                string tempres = objBSOExpressionParser.ParseFormula(strFormula, TransactionDetail);
                double.TryParse(tempres, out result);
            }
            else
            {
                result = TransactionDetail.Quantity;
            }

            if (UseQuantityFactor)
            {
                if (TransactionDetail.QuantityFactor != 1 && TransactionDetail.QuantityFactor != 0)
                {
                    result = result / TransactionDetail.QuantityFactor;
                }
            }

            oUnit = APIEngine.DSOCache.UnitOfMeasureProvider.GetUnitOfMeasure(TransactionDetail.UnitOfSaleID);
            if (oUnit != null)
            {
                result = mathUtil.MyRoundEx(result, oUnit.MaximumDecimals);
            }
            oUnit = null;

            objBSOExpressionParser = null;
            mathUtil = null;

            return(result);
        }
Exemple #6
0
        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);
        }
        private void BsoItemTrans_WarningItemStock(TransactionWarningsEnum MsgID, ItemTransactionDetail objItemTransactionDetail)
        {
            double dblStockQuantity        = 0;
            double dblReorderPointQuantity = 0;
            string strMessage = string.Empty;

            switch (MsgID)
            {
            case TransactionWarningsEnum.tweItemColorSizeStockNotHavePhysical:
            case TransactionWarningsEnum.tweItemStockNotHavePhysical:
                if (objItemTransactionDetail.PackQuantity == 0)
                {
                    dblStockQuantity = objItemTransactionDetail.QntyPhysicalBalanceCount;
                }
                else
                {
                    dblStockQuantity = objItemTransactionDetail.QntyPhysicalBalanceCount / objItemTransactionDetail.PackQuantity;
                }
                strMessage = APIEngine.gLng.GS((int)MsgID, new object[] {
                    objItemTransactionDetail.WarehouseID.ToString().Trim(),
                    dblStockQuantity,
                    objItemTransactionDetail.UnitOfSaleID,
                    objItemTransactionDetail.ItemID,
                    objItemTransactionDetail.Size.Description,
                    objItemTransactionDetail.Color.Description
                });

                break;

            case TransactionWarningsEnum.tweItemReorderPoint:
            case TransactionWarningsEnum.tweItemColorSizeReorderPoint:
                if (objItemTransactionDetail.PackQuantity == 0)
                {
                    dblStockQuantity        = objItemTransactionDetail.QntyWrPhysicalBalanceCount;
                    dblReorderPointQuantity = objItemTransactionDetail.QntyReorderPoint;
                }
                else
                {
                    dblStockQuantity        = objItemTransactionDetail.QntyWrPhysicalBalanceCount / objItemTransactionDetail.PackQuantity;
                    dblReorderPointQuantity = objItemTransactionDetail.QntyReorderPoint / objItemTransactionDetail.PackQuantity;
                }
                strMessage = APIEngine.gLng.GS((int)MsgID, new object[] {
                    objItemTransactionDetail.WarehouseID.ToString(),
                    dblStockQuantity.ToString(),
                    objItemTransactionDetail.UnitOfSaleID,
                    objItemTransactionDetail.ItemID,
                    objItemTransactionDetail.Size.Description,
                    objItemTransactionDetail.Color.Description,
                    dblReorderPointQuantity.ToString()
                });
                break;

            default:
                if (objItemTransactionDetail.PackQuantity == 0)
                {
                    dblStockQuantity = objItemTransactionDetail.QntyAvailableBalanceCount;
                }
                else
                {
                    dblStockQuantity = objItemTransactionDetail.QntyAvailableBalanceCount / objItemTransactionDetail.PackQuantity;
                }
                strMessage = APIEngine.gLng.GS((int)MsgID, new object[] {
                    objItemTransactionDetail.WarehouseID.ToString(),
                    dblStockQuantity.ToString(),
                    objItemTransactionDetail.UnitOfSaleID,
                    objItemTransactionDetail.ItemID,
                    objItemTransactionDetail.Size.Description,
                    objItemTransactionDetail.Color.Description
                });
                break;
            }
            if (!string.IsNullOrEmpty(strMessage))
            {
                MessageBox.Show(strMessage, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
        /// <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);
        }
        private void BsoItemTrans_WarningItemStock(TransactionWarningsEnum MsgID, ItemTransactionDetail objItemTransactionDetail)
        {

            var wareHouses = MyApp.DSOCache.WarehouseProvider.GetWarehouseRS();
            List<StockByWareHouse> stockByWareHouseList = new List<StockByWareHouse>();

            while (!wareHouses.EOF)
            {
                short wareHouseID = Convert.ToInt16(wareHouses.Fields["WareHouseID"].Value);
                if (objItemTransactionDetail.WarehouseID != wareHouseID)
                {
                    var itemStk = MyApp.DSOCache.ItemProvider.GetItemStockOnWarehouse(objItemTransactionDetail.ItemID, wareHouseID, 0, 0);
                    StockByWareHouse stockByWareHouse = new StockByWareHouse();
                    stockByWareHouse.WareHouseID = wareHouseID;
                    stockByWareHouse.Stock = itemStk.PhysicalQty;
                    stockByWareHouseList.Add(stockByWareHouse);
                }
                wareHouses.MoveNext();
            }

            //string message = string.Format("Apenas existem {0} quantidades no armazém {1}.", actualPhysicalQty.PhysicalQty, itemTransactionDetail.WarehouseID) ;
            string message = "";
            if (stockByWareHouseList.Count() > 0)
            {
                message = message + string.Format("\nStock restantes armazéns:\n\n");
                foreach (StockByWareHouse sbw in stockByWareHouseList)
                {
                    message = message + string.Format("- Arm. {0}\t\t\t\tQnt. {1}\n", sbw.WareHouseID, sbw.Stock);
                }
            }

            MessageBox.Show(message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);

            //double dblStockQuantity = 0;
            //double dblReorderPointQuantity = 0;
            //string strMessage = string.Empty;

            //switch (MsgID)
            //{
            //    case TransactionWarningsEnum.tweItemColorSizeStockNotHavePhysical:
            //    case TransactionWarningsEnum.tweItemStockNotHavePhysical:
            //        if (objItemTransactionDetail.PackQuantity == 0)
            //        {
            //            dblStockQuantity = objItemTransactionDetail.QntyPhysicalBalanceCount;
            //        }
            //        else
            //        {
            //            dblStockQuantity = objItemTransactionDetail.QntyPhysicalBalanceCount / objItemTransactionDetail.PackQuantity;
            //        }
            //        strMessage = MyApp.gLng.GS((int)MsgID, new object[]{
            //                                                 objItemTransactionDetail.WarehouseID.ToString().Trim(),
            //                                                 dblStockQuantity,
            //                                                 objItemTransactionDetail.UnitOfSaleID,
            //                                                 objItemTransactionDetail.ItemID,
            //                                                 objItemTransactionDetail.Size.Description,
            //                                                 objItemTransactionDetail.Color.Description
            //                                    });

            //        break;

            //    case TransactionWarningsEnum.tweItemReorderPoint:
            //    case TransactionWarningsEnum.tweItemColorSizeReorderPoint:
            //        if (objItemTransactionDetail.PackQuantity == 0)
            //        {
            //            dblStockQuantity = objItemTransactionDetail.QntyWrPhysicalBalanceCount;
            //            dblReorderPointQuantity = objItemTransactionDetail.QntyReorderPoint;
            //        }
            //        else
            //        {
            //            dblStockQuantity = objItemTransactionDetail.QntyWrPhysicalBalanceCount / objItemTransactionDetail.PackQuantity;
            //            dblReorderPointQuantity = objItemTransactionDetail.QntyReorderPoint / objItemTransactionDetail.PackQuantity;
            //        }
            //        strMessage = MyApp.gLng.GS((int)MsgID, new object[]{
            //                                                 objItemTransactionDetail.WarehouseID.ToString(),
            //                                                 dblStockQuantity.ToString(),
            //                                                 objItemTransactionDetail.UnitOfSaleID,
            //                                                 objItemTransactionDetail.ItemID,
            //                                                 objItemTransactionDetail.Size.Description,
            //                                                 objItemTransactionDetail.Color.Description,
            //                                                 dblReorderPointQuantity.ToString()
            //                                                });
            //        break;

            //    default:
            //        if (objItemTransactionDetail.PackQuantity == 0)
            //        {
            //            dblStockQuantity = objItemTransactionDetail.QntyAvailableBalanceCount;
            //        }
            //        else
            //        {
            //            dblStockQuantity = objItemTransactionDetail.QntyAvailableBalanceCount / objItemTransactionDetail.PackQuantity;
            //        }
            //        strMessage = MyApp.gLng.GS((int)MsgID, new object[]{
            //                                                 objItemTransactionDetail.WarehouseID.ToString(),
            //                                                 dblStockQuantity.ToString(),
            //                                                 objItemTransactionDetail.UnitOfSaleID,
            //                                                 objItemTransactionDetail.ItemID,
            //                                                 objItemTransactionDetail.Size.Description,
            //                                                 objItemTransactionDetail.Color.Description
            //                                                });
            //        break;
            //}
            //    if (!string.IsNullOrEmpty(strMessage))
            //    {
            //        MessageBox.Show(strMessage, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
            //    }

        }