Esempio n. 1
0
        public static ICInvStatusComUnitsInfo GetInventory(BusinessObject objRealCompanyUnit, Guid itemID)
        {
            GECompanyUnitsInfo obj = CompanyUnitProvider.GetCompanyUnit(objRealCompanyUnit);

            if (obj == null)
            {
                return(null);
            }

            return(GetInventory(obj.GECompanyUnitID, itemID));
        }
Esempio n. 2
0
        public static void DoInventoryAction(List <BusinessObject> lstObjects, bool isCalcInventoryReport)
        {
            #region Init
            Dictionary <String, List <BusinessObject> > lstDictObjects = new Dictionary <string, List <BusinessObject> >();
            foreach (BusinessObject obj in lstObjects)
            {
                if (lstDictObjects.ContainsKey(obj.AATableName) == false)
                {
                    lstDictObjects.Add(obj.AATableName, new List <BusinessObject>()
                    {
                        obj
                    });
                }
                else
                {
                    lstDictObjects[obj.AATableName].Add(obj);
                }
            }
            #endregion

            Dictionary <Guid, List <Guid> > lstProductIDs = new Dictionary <Guid, List <Guid> >();

            CriteriaToExpressionConverter converter = new CriteriaToExpressionConverter();
            foreach (String strTableName in lstDictObjects.Keys)
            {
                if (IsNeedCalculateInventory(strTableName))
                {
                    #region Calculate Inventory

                    foreach (ICInventoryConfigsInfo config in GetConfigs(strTableName))
                    {
                        if (!config.IsShipment || !config.IsLost || !config.IsReceive)
                        {
                            continue;
                        }

                        DevExpress.Data.Filtering.CriteriaOperator operatorConvert = DevExpress.Data.Filtering.CriteriaOperator.Parse(config.VoucherConditionString);
                        List <BusinessObject> lstFilteredObjects = ((IQueryable <BusinessObject>)lstDictObjects[strTableName].AsQueryable().AppendWhere(converter, operatorConvert)).ToList();
                        foreach (BusinessObject obj in lstFilteredObjects)
                        {
                            #region companyUnitID

                            Guid companyUnitID = Guid.Empty;
                            if (!String.IsNullOrWhiteSpace(config.VoucherComUnitIDField))
                            {
                                companyUnitID = ABCHelper.DataConverter.ConvertToGuid(ABCDynamicInvoker.GetValue(obj, config.VoucherComUnitIDField));
                            }
                            else if (!String.IsNullOrWhiteSpace(config.VoucherRealComUnitIDField) && !String.IsNullOrWhiteSpace(config.VoucherTableName))
                            {
                                companyUnitID = ABCHelper.DataConverter.ConvertToGuid(ABCDynamicInvoker.GetValue(obj, config.VoucherRealComUnitIDField));
                                companyUnitID = CompanyUnitProvider.GetCompanyUnitID(config.VoucherTableName, companyUnitID);
                            }
                            if (companyUnitID == Guid.Empty)
                            {
                                continue;
                            }
                            #endregion

                            Guid     productID = ABCHelper.DataConverter.ConvertToGuid(ABCDynamicInvoker.GetValue(obj, config.ProductIDField));
                            String   strSKU    = ABCDynamicInvoker.GetValue(obj, config.SKUField).ToString();
                            double   qty       = Convert.ToDouble(ABCDynamicInvoker.GetValue(obj, config.QtyField));
                            DateTime date      = Convert.ToDateTime(ABCDynamicInvoker.GetValue(obj, config.DateField));

                            if (productID != Guid.Empty && qty != 0 && date != null && date != DateTime.MinValue && date != DateTime.MaxValue)
                            {
                                if (config.IsShipment || config.IsLost)
                                {
                                    DoShipment(companyUnitID, productID, strSKU, qty, date);
                                }
                                else if (config.IsReceive)
                                {
                                    DoReceipt(companyUnitID, productID, strSKU, qty, date);
                                }

                                if (lstProductIDs.ContainsKey(companyUnitID) == false)
                                {
                                    lstProductIDs.Add(companyUnitID, new List <Guid>()
                                    {
                                        productID
                                    });
                                }
                                else
                                {
                                    lstProductIDs[companyUnitID].Add(productID);
                                }
                            }
                        }
                    }
                    #endregion
                }
            }

            if (isCalcInventoryReport)
            {
                //foreach ( Guid comUnitID in lstProductIDs.Keys )
                //{
                //    foreach(Guid productID in lstProductIDs[comUnitID])
                //        InventoryReportCalculate(comUnitID,productID,
                //}
            }
        }