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