/// <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); } }
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); }
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(); } } } } }