Пример #1
0
        /// <summary>
        /// Executes code that will insert Invoiced Items into Movement.
        /// </summary>
        /// <param name="invoice"></param>
        public void Insert_Items_2_Movement(purchase_invoice invoice)
        {
            Brillo.Logic.Stock   _Stock            = new Brillo.Logic.Stock();
            List <item_movement> item_movementList = new List <item_movement>();

            item_movementList = _Stock.insert_Stock(this, invoice);

            if (item_movementList != null && item_movementList.Count > 0)
            {
                item_movement.AddRange(item_movementList);
            }
        }
Пример #2
0
        public purchase_invoice New()
        {
            purchase_invoice purchase_invoice = new purchase_invoice();

            //purchase_invoice.id_range = Brillo.GetDefault.Range(App.Names.PurchaseInvoice);
            purchase_invoice.status     = Status.Documents_General.Pending;
            purchase_invoice.trans_date = DateTime.Now;

            purchase_invoice.State             = EntityState.Added;
            purchase_invoice.IsSelected        = true;
            purchase_invoice.app_branch        = app_branch.Where(x => x.id_branch == CurrentSession.Id_Branch).FirstOrDefault();
            base.Entry(purchase_invoice).State = EntityState.Added;
            return(purchase_invoice);
        }
Пример #3
0
        public void ApproveImport()
        {
            foreach (impex impex in base.impex.Local.Where(x => x.status != Status.Documents_General.Approved && x.impex_type == entity.impex._impex_type.Import && x.IsSelected))
            {
                if (impex.Error == null)
                {
                    if (impex.id_impex == 0)
                    {
                        SaveChanges();
                    }

                    //fill up virtual class
                    List <entity.Class.Impex_CostDetail> ImpexImportDetails = Fill_ViewModel(impex);
                    List <impex_expense> impex_expenses = impex.impex_expense.ToList();

                    if (ImpexImportDetails.Count > 0)
                    {
                        //To make sure we have a Purchase Total
                        decimal purchaseTotal = ImpexImportDetails.Sum(i => i.sub_total);
                        if (purchaseTotal != 0)
                        {
                            foreach (entity.Class.Impex_CostDetail Impex_CostDetail in ImpexImportDetails)
                            {
                                //Get total value of a Product Row
                                decimal itemTotal = Impex_CostDetail.quantity * Impex_CostDetail.unit_cost;

                                purchase_invoice purchase_invoice = base.purchase_invoice.Where(x => x.id_purchase_invoice == Impex_CostDetail.id_invoice).FirstOrDefault();
                                item_movement    item_movement    = base.item_movement.Where(x => x.id_purchase_invoice_detail == Impex_CostDetail.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, purchase_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;
                                        if (item_movement != null)
                                        {
                                            item_movement.item_movement_value.Add(item_movement_detail);
                                        }
                                    }
                                }
                            }
                            impex.status = Status.Documents_General.Approved;
                            base.SaveChanges();
                        }
                    }
                }
            }
        }