Пример #1
0
        public void UpdateUnitCost()
        {
            using (db db = new db())
            {
                List <item> items = db.items.ToList();
                foreach (item item in items)
                {
                    if (item.item_product.FirstOrDefault() != null)
                    {
                        item_product item_product = item.item_product.FirstOrDefault();

                        /// Check for movement that have credit and no parents (Purchase or Inventory). Also that has value in Item Movement Value.
                        item_movement item_movement = db.item_movement
                                                      .Where(x =>
                                                             x.id_item_product == item_product.id_item_product &&
                                                             x.credit > 0 &&
                                                             x._parent == null &&
                                                             x.item_movement_value.Sum(y => y.unit_value) > 0).OrderByDescending(x => x.trans_date).FirstOrDefault();

                        if (item_movement != null)
                        {
                            item.unit_cost = item_movement.item_movement_value.Sum(x => x.unit_value);
                        }
                    }
                }
                db.SaveChanges();
            }
        }
Пример #2
0
        private void Page_Loaded(object sender, RoutedEventArgs e)
        {
            CollectionViewSource app_dimensionViewSource = ((CollectionViewSource)(FindResource("app_dimensionViewSource")));

            app_measurementViewSource = ((CollectionViewSource)(FindResource("app_measurementViewSource")));

            item_movementViewSource = ((CollectionViewSource)(FindResource("item_movementViewSource")));
            List <item_movement> Items_InStockLIST = null;


            app_dimensionViewSource.Source   = db.app_dimension.Where(a => a.id_company == CurrentSession.Id_Company).ToList();
            app_measurementViewSource.Source = db.app_measurement.Where(a => a.id_company == CurrentSession.Id_Company).ToList();

            //Items_InStockLIST = ExecutionDB.item_movement.ToList();
            Items_InStockLIST = db.item_movement.Where(x => x.id_location == id_location &&
                                                       x.item_product.id_item == id_item &&
                                                       x.status == entity.Status.Stock.InStock &&
                                                       (x.credit - (x._child.Count() > 0 ? x._child.Sum(y => y.debit) : 0)) > 0).ToList();



            if (Items_InStockLIST.Count() > 0)
            {
                item_movementViewSource.Source = Items_InStockLIST;
                item_movementViewSource.View.MoveCurrentToFirst();

                id_movement   = (item_movementViewSource.View.CurrentItem as item_movement).id_movement;
                item_movement = item_movementViewSource.View.CurrentItem as item_movement;
            }
        }
Пример #3
0
 public void calc_SingleCost(item_product item_product)
 {
     using (db db = new db())
     {
         int           itemproductId = item_product.id_item_product;
         item_movement ItemMovement  = db.item_movement.Where(x => x.credit > 0 && x.id_item_product == itemproductId).OrderByDescending(x => x.trans_date).Take(1).FirstOrDefault();
         if (ItemMovement != null)
         {
             item_product.item.unit_cost = ItemMovement.item_movement_value.Sum(x => x.unit_value);
         }
     }
 }
Пример #4
0
 private void item_movement_detailDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (item_movementViewSource != null)
     {
         if (item_movementViewSource.View != null)
         {
             if (item_movementViewSource.View.CurrentItem as item_movement != null)
             {
                 id_movement   = (item_movementViewSource.View.CurrentItem as item_movement).id_movement;
                 item_movement = item_movementViewSource.View.CurrentItem as item_movement;
             }
         }
     }
 }
Пример #5
0
 public void calc_EntireCost()
 {
     using (db db = new db())
     {
         foreach (item_product item_product in db.item_product.Where(x => x.id_company == CurrentSession.Id_Company && x.item.is_active))
         {
             int           itemproductId = item_product.id_item_product;
             item_movement ItemMovement  = db.item_movement.Where(x => x.credit > 0 && x.id_item_product == itemproductId).OrderByDescending(x => x.trans_date).Take(1).FirstOrDefault();
             if (ItemMovement != null)
             {
                 item_product.item.unit_cost = ItemMovement.item_movement_value.Sum(x => x.unit_value);
             }
         }
         db.SaveChanges();
     }
 }
Пример #6
0
        private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            sales_packing sales_packing = sales_packingViewSource.View.CurrentItem as sales_packing;
            item_movement item_movement = item_movementViewSource.View.CurrentItem as item_movement;

            sales_packing.contact    = item_movement.sales_invoice_detail.sales_invoice.contact;
            sales_packing.id_contact = item_movement.sales_invoice_detail.sales_invoice.id_contact;

            foreach (item_movement _item_movement in item_movementViewSource.View.OfType <item_movement>().ToList())
            {
                //Creates a Packing Detail
                sales_packing_detail sales_packing_detail = new sales_packing_detail();
                sales_packing_detail.id_location   = _item_movement.id_location;
                sales_packing_detail.id_item       = _item_movement.item_product.id_item;
                sales_packing_detail.quantity      = _item_movement.debit;
                sales_packing_detail.sales_packing = sales_packing;

                //Creates relationship with Sales Invoice.
                sales_packing_relation sales_packing_relation = new entity.sales_packing_relation();
                sales_packing_relation.sales_packing_detail    = sales_packing_detail;
                sales_packing_relation.id_sales_invoice_detail = (long)_item_movement.id_sales_invoice_detail;
                sales_packing.id_opportunity = _item_movement.sales_invoice_detail.sales_invoice.id_opportunity;

                dbContext.sales_packing_relation.Add(sales_packing_relation);
                sales_packing.sales_packing_detail.Add(sales_packing_detail);

                //Relates the Item Movement to Packing
                _item_movement.sales_packing_detail = sales_packing_detail;
            }
            if (sales_packing.number == null && sales_packing.id_range > 0)
            {
                entity.Brillo.Logic.Range.branch_Code   = dbContext.app_branch.Where(x => x.id_branch == sales_packing.id_branch).FirstOrDefault().code;
                entity.Brillo.Logic.Range.terminal_Code = dbContext.app_terminal.Where(x => x.id_terminal == sales_packing.id_terminal).FirstOrDefault().code;
                app_document_range app_document_range = dbContext.app_document_range.Where(x => x.id_range == sales_packing.id_range).FirstOrDefault();
                sales_packing.number = entity.Brillo.Logic.Range.calc_Range(app_document_range, true);
                sales_packing.RaisePropertyChanged("number");
                sales_packing.is_issued = true;

                entity.Brillo.Document.Start.Automatic(sales_packing, app_document_range);
            }
            else
            {
                sales_packing.is_issued = false;
            }
            dbContext.SaveChanges();
            item_movementViewSource.Source = null;
        }
Пример #7
0
        private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            IEnumerable <DbEntityValidationResult> validationresult = entity.db.GetValidationErrors();

            if (validationresult.Count() == 0)
            {
                for (int i = 0; i < item_transfer_detailDataGrid.Items.Count - 1; i++)
                {
                    item_transfer_detail item = (item_transfer_detail)item_transfer_detailDataGrid.Items[i];

                    item_movement item_movement_origin = new item_movement();
                    item_movement_origin.debit       = 0;
                    item_movement_origin.credit      = item.quantity_origin;
                    item_movement_origin.id_location = item.item_transfer.app_location_origin.id_location;
                    //  item_movement_origin.transaction_id = 0;
                    item_movement_origin.status     = Status.Stock.InStock;
                    item_movement_origin.trans_date = item.item_transfer.trans_date;
                    if (item.item_product.id_item_product != 0)
                    {
                        if (entity.db.item_product.Where(x => x.id_item_product == item.id_item_product).FirstOrDefault() != null)
                        {
                            item_movement_origin.id_item_product = entity.db.item_product.Where(x => x.id_item_product == item.id_item_product).FirstOrDefault().id_item_product;
                        }
                    }
                    entity.db.item_movement.Add(item_movement_origin);
                    item_movement item_movement_dest = new item_movement();
                    item_movement_dest.debit       = item.quantity_destination;
                    item_movement_dest.credit      = 0;
                    item_movement_dest.id_location = item.item_transfer.app_location_destination.id_location;
                    //item_movement_dest.transaction_id = 0;
                    item_movement_dest.status     = Status.Stock.InStock;
                    item_movement_dest.trans_date = item.item_transfer.trans_date;
                    if (item.item_product.id_item_product != 0)
                    {
                        if (entity.db.item_product.Where(x => x.id_item_product == item.id_item_product).FirstOrDefault() != null)
                        {
                            item_movement_dest.id_item_product = entity.db.item_product.Where(x => x.id_item_product == item.id_item_product).FirstOrDefault().id_item_product;
                        }
                    }
                    entity.db.item_movement.Add(item_movement_dest);
                }
                entity.SaveChanges();
            }
        }
Пример #8
0
        public List <StockList> ScalarMovement(item_movement item_movement)
        {
            string query = @"select 
                                parent.id_movement as MovementID, 
                                parent.trans_date as TransDate, 
                                parent.credit  as QtyBalance, 
                                (select sum(unit_value) from item_movement_value as parent_val where id_movement = parent.id_movement) as Cost

                                from item_movement as parent
                             

                                where parent.id_movement={0}
                                group by parent.id_movement
                                order by parent.trans_date";

            query = String.Format(query, item_movement.id_movement);
            DataTable dt = exeDT(query);

            return(GenerateList(dt));
        }
Пример #9
0
        public List <item_movement> CalculateStock(production_execution production_execution, List <item_movement> item_movementList)
        {
            foreach (production_execution_detail detail in production_execution.production_execution_detail
                     .Where(x => x.item.id_item_type == item.item_type.Product ||
                            x.item.id_item_type == item.item_type.RawMaterial))
            {
                item_product item_product = Stock.FindNFix_ItemProduct(detail.item);

                List <item_movement> _item_movementList;
                _item_movementList = db.item_movement.Where(x => x.id_location == production_execution.production_line.id_location &&
                                                            x.id_item_product == item_product.id_item_product &&
                                                            x.status == entity.Status.Stock.InStock &&
                                                            (x.credit - (x._child.Count() > 0 ? x._child.Sum(y => y.debit) : 0)) > 0).ToList();

                if (item_product.cogs_type == item_product.COGS_Types.LIFO && _item_movementList != null)
                {
                    _item_movementList = _item_movementList.OrderBy(x => x.trans_date).ToList();
                }
                else if (_item_movementList != null)
                {
                    _item_movementList = _item_movementList.OrderByDescending(x => x.trans_date).ToList();
                }
                else
                {
                    //Adding into List if _item_movementList is empty.
                    item_movementList.Add(Stock.debit_Movement(entity.Status.Stock.InStock,
                                                               App.Names.ProductionExecustion,
                                                               detail.id_production_execution,
                                                               item_product.id_item_product,
                                                               (int)production_execution.production_line.id_location,
                                                               detail.quantity,
                                                               production_execution.trans_date,
                                                               Stock.comment_Generator(App.Names.ProductionExecustion, production_execution.id_production_execution.ToString(), "")
                                                               ));
                }

                foreach (item_movement object_Movement in _item_movementList)
                {
                    decimal qty_ExexustionDetail = detail.quantity;

                    if (qty_ExexustionDetail > 0)
                    {
                        item_movement item_movement = new item_movement();



                        if (detail.is_input)
                        {
                            decimal movement_debit_quantity = qty_ExexustionDetail;
                            if (object_Movement.credit <= qty_ExexustionDetail)
                            {
                                movement_debit_quantity = object_Movement.credit;
                            }
                            else
                            {
                                movement_debit_quantity = qty_ExexustionDetail;
                            }

                            //If input is true, then we should DEBIT Stock.
                            item_movement = Stock.debit_Movement(entity.Status.Stock.InStock,
                                                                 App.Names.ProductionExecustion,
                                                                 (int)detail.id_production_execution,
                                                                 item_product.id_item_product,
                                                                 (int)production_execution.production_line.id_location,
                                                                 movement_debit_quantity,
                                                                 production_execution.trans_date,
                                                                 Stock.comment_Generator(App.Names.ProductionExecustion,
                                                                                         production_execution.id_production_execution.ToString(), ""));
                        }
                        else
                        {
                            //If input is false, then we should CREDIT Stock.
                            item_movement = Stock.credit_Movement(entity.Status.Stock.InStock,
                                                                  App.Names.ProductionExecustion,
                                                                  (int)detail.id_production_execution,
                                                                  item_product.id_item_product,
                                                                  (int)production_execution.production_line.id_location,
                                                                  qty_ExexustionDetail,
                                                                  production_execution.trans_date,
                                                                  Stock.comment_Generator(App.Names.ProductionExecustion,
                                                                                          production_execution.id_production_execution.ToString(), ""));
                        }

                        item_movement._parent = object_Movement;

                        //Logic for Value
                        item_movement_value item_movement_value = new item_movement_value();
                        item_movement_value.unit_value    = object_Movement.item_movement_value.Sum(i => i.unit_value);
                        item_movement_value.id_currencyfx = object_Movement.item_movement_value.FirstOrDefault().id_currencyfx;
                        item_movement_value.comment       = item_movement.comment;
                        item_movement.item_movement_value.Add(item_movement_value);
                        //Adding into List
                        item_movementList.Add(item_movement);
                        qty_ExexustionDetail = qty_ExexustionDetail - object_Movement.credit;
                    }
                }
            }
            return(item_movementList);
        }
Пример #10
0
        private void toolBar_btnApprove_Click(object sender)
        {
            try
            {
                impex impex = impexDataGrid.SelectedItem as impex;

                if (impex.status != Status.Documents_General.Approved)
                {
                    List <impex_expense> impex_expenses = impex.impex_expense.ToList();
                    List <entity.Class.Impex_CostDetail> ImpexImportDetails = (List <entity.Class.Impex_CostDetail>)impex_ExportDataGrid.ItemsSource;
                    if (ImpexImportDetails.Count > 0)
                    {
                        //To make sure we have a Purchase Total
                        decimal SalesTotal = ImpexImportDetails.Sum(i => i.sub_total);
                        if (SalesTotal != 0)
                        {
                            foreach (entity.Class.Impex_CostDetail detail in ImpexImportDetails)
                            {
                                //Get total value of a Product Row
                                decimal itemTotal = detail.quantity * detail.unit_cost;

                                sales_invoice sales_invoice = ImpexDB.sales_invoice.Where(x => x.id_sales_invoice == detail.id_invoice).FirstOrDefault();
                                item_movement item_movement = ImpexDB.item_movement.Where(x => x.id_sales_invoice_detail == detail.id_invoice_detail).FirstOrDefault();

                                foreach (impex_expense _impex_expense in impex_expenses)
                                {
                                    decimal condition_value = _impex_expense.value;
                                    if (condition_value != 0 && itemTotal != 0)
                                    {
                                        //Coeficient is used to get prorated cost of one item
                                        item_movement_value item_movement_detail = new item_movement_value();

                                        decimal Cost = Math.Round(_impex_expense.value / ImpexImportDetails.Sum(x => x.quantity), 2);

                                        //decimal Cost = Impex_CostDetail.unit_cost * coeficient;

                                        //Improve this in future. For now take from Purchase
                                        using (db db = new db())
                                        {
                                            int     ID_CurrencyFX_Default = CurrentSession.CurrencyFX_Default.id_currencyfx;
                                            decimal DefaultCurrency_Cost  = Currency.convert_Values(Cost, sales_invoice.id_currencyfx, ID_CurrencyFX_Default, null);

                                            item_movement_detail.unit_value    = DefaultCurrency_Cost;
                                            item_movement_detail.id_currencyfx = ID_CurrencyFX_Default;
                                        }

                                        item_movement_detail.comment = _impex_expense.impex_incoterm_condition.name;
                                        item_movement.item_movement_value.Add(item_movement_detail);
                                    }
                                }
                            }
                            impex.status = Status.Documents_General.Approved;
                            ImpexDB.SaveChanges();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                toolBar.msgError(ex);
            }
        }
Пример #11
0
        private void toolBar_btnApprove_Click(object sender)
        {
            item_transfer item_transfer = item_transferViewSource.View.CurrentItem as item_transfer;

            if ((item_transfer.number == null || item_transfer.number == string.Empty) && item_transfer.app_document_range != null)
            {
                entity.Brillo.Logic.Document _Document = new entity.Brillo.Logic.Document();
                if (item_transfer.id_branch > 0)
                {
                    if (dbContext.app_branch.Where(x => x.id_branch == item_transfer.id_branch).FirstOrDefault() != null)
                    {
                        entity.Brillo.Logic.Range.branch_Code = dbContext.app_branch.Where(x => x.id_branch == item_transfer.id_branch).FirstOrDefault().code;
                    }
                }
                if (item_transfer.id_terminal > 0)
                {
                    if (dbContext.app_terminal.Where(x => x.id_terminal == item_transfer.id_terminal).FirstOrDefault() != null)
                    {
                        entity.Brillo.Logic.Range.terminal_Code = dbContext.app_terminal.Where(x => x.id_terminal == item_transfer.id_terminal).FirstOrDefault().code;
                    }
                }
                if (item_transfer.id_user > 0)
                {
                    if (dbContext.security_user.Where(x => x.id_user == item_transfer.id_user).FirstOrDefault() != null)
                    {
                        entity.Brillo.Logic.Range.user_Code = dbContext.security_user.Where(x => x.id_user == item_transfer.id_user).FirstOrDefault().code;
                    }
                }
                if (item_transfer.id_project > 0)
                {
                    if (dbContext.projects.Where(x => x.id_project == item_transfer.id_project).FirstOrDefault() != null)
                    {
                        entity.Brillo.Logic.Range.project_Code = dbContext.projects.Where(x => x.id_project == item_transfer.id_project).FirstOrDefault().code;
                    }
                }

                app_document_range app_document_range = item_transfer.app_document_range;
                item_transfer.number = entity.Brillo.Logic.Range.calc_Range(app_document_range, true);
            }

            item_transfer.user_requested = dbContext.security_user.Where(x => x.id_user == CurrentSession.Id_User).FirstOrDefault();
            item_transfer.user_given     = dbContext.security_user.Where(x => x.id_user == CurrentSession.Id_User).FirstOrDefault();
            item_transfer.status         = Status.Transfer.Approved;

            dbContext.SaveChanges();

            for (int i = 0; i < item_transfer_detailDataGrid.Items.Count; i++)
            {
                entity.Brillo.Logic.Stock stock = new entity.Brillo.Logic.Stock();

                item_transfer_detail item_transfer_detail = (item_transfer_detail)item_transfer_detailDataGrid.Items[i];

                List <entity.Brillo.StockList> Items_InStockLIST;
                app_currencyfx app_currencyfx = ProductMovementDB.app_currencyfx.Where(x => x.app_currency.is_active).FirstOrDefault();
                app_location   app_location   = item_transfer_detail.item_transfer.app_location_origin;

                if (itemMovement.item_movement != null)
                {
                    entity.Brillo.Stock stockBrillo = new entity.Brillo.Stock();
                    Items_InStockLIST = stockBrillo.ScalarMovement(itemMovement.item_movement);
                }
                else
                {
                    entity.Brillo.Stock stockBrillo = new entity.Brillo.Stock();
                    Items_InStockLIST = stockBrillo.List(app_location.app_branch, app_location, item_transfer_detail.item_product);
                }

                ///Debit Movement from Origin.
                List <item_movement> item_movement_originList;
                item_movement_originList = stock.DebitOnly_MovementLIST(ProductMovementDB, Items_InStockLIST, Status.Stock.InStock, entity.App.Names.Movement, item_transfer_detail.id_transfer, item_transfer_detail.id_transfer_detail, app_currencyfx, item_transfer_detail.item_product, app_location,
                                                                        item_transfer_detail.quantity_origin, item_transfer_detail.item_transfer.trans_date, stock.comment_Generator(entity.App.Names.Movement, item_transfer_detail.item_transfer.number != null ? item_transfer_detail.item_transfer.number.ToString() : "", ""));

                ProductMovementDB.item_movement.AddRange(item_movement_originList);

                //Credit Movement to Destination
                item_movement item_movement_dest;
                item_movement parent_item_movement = item_movement_originList.FirstOrDefault();

                List <item_movement_dimension> DimensionList = null;

                if (item_movement_originList.FirstOrDefault().item_movement_dimension.Count() > 0)
                {
                    DimensionList = new List <item_movement_dimension>();
                    foreach (item_movement_dimension item_movement_dimension in item_movement_originList.FirstOrDefault().item_movement_dimension)
                    {
                        item_movement_dimension _item_movement_dimension = new item_movement_dimension();
                        _item_movement_dimension.id_dimension = item_movement_dimension.id_dimension;
                        _item_movement_dimension.value        = item_movement_dimension.value;
                        DimensionList.Add(_item_movement_dimension);
                    }
                }

                item_movement_dest =
                    stock.CreditOnly_Movement(
                        Status.Stock.InStock,
                        entity.App.Names.Movement,
                        item_transfer_detail.id_transfer,
                        item_transfer_detail.id_transfer_detail,
                        app_currencyfx,
                        item_transfer_detail.item_product,
                        item_transfer_detail.item_transfer.app_location_destination,
                        item_transfer_detail.quantity_destination,
                        item_transfer_detail.item_transfer.trans_date,
                        item_movement_originList.Sum(x => (x.item_movement_value.Sum(y => y.unit_value) / (x.item_movement_value.Count() != 0 ? x.item_movement_value.Count() : 1))),
                        stock.comment_Generator(entity.App.Names.Movement, item_transfer_detail.item_transfer.number != null ? item_transfer_detail.item_transfer.number.ToString() : "", ""),
                        DimensionList
                        );
                //item_movement_dest._parent = Items_InStockLIST.FirstOrDefault();
                ProductMovementDB.item_movement.Add(item_movement_dest);
                item_transfer.status = Status.Transfer.Approved;
            }

            if (item_transfer.status == Status.Transfer.Approved && item_transfer.app_document_range != null)
            {
                entity.Brillo.Document.Start.Automatic(item_transfer, item_transfer.app_document_range);
            }

            if (ProductMovementDB.SaveChanges() > 0)
            {
                toolBar.msgSaved(ProductMovementDB.NumberOfRecords);
                itemMovement = new Configs.itemMovement();
            }
        }