예제 #1
0
        private void toolIcon_Click(object sender)
        {
            production_order production_order = production_orderViewSource.View.CurrentItem as production_order;

            production_orderproduction_order_detailViewSource.View.Filter = null;

            List <production_order_detail> _production_order_detail = treeProject.ItemsSource.Cast <production_order_detail>().ToList();

            foreach (production_order_detail production_order_detail in _production_order_detail.Where(x => x.IsSelected == true))
            {
                if (production_order_detail.parent != null)
                {
                    production_order_detail.parent.status = entity.Status.Production.Approved;
                }

                production_order_detail.status = entity.Status.Production.Approved;
            }

            if (production_order.production_execution.Count() == 0)
            {
                production_execution production_execution = new production_execution();
                production_execution.production_order   = production_order;
                production_execution.id_production_line = production_order.id_production_line;
                production_execution.trans_date         = DateTime.Now;
                OrderDB.production_execution.Add(production_execution);
            }

            if (OrderDB.SaveChanges() > 0)
            {
                filter_task();
                toolBar.msgSaved(OrderDB.NumberOfRecords);
            }
        }
예제 #2
0
 private void toolBar_btnSearch_Click(object sender, string query)
 {
     try
     {
         if (!string.IsNullOrEmpty(query))
         {
             production_executionViewSource.View.Filter = i =>
             {
                 production_execution production_execution = i as production_execution;
                 if (production_execution.production_order.name.ToLower().Contains(query.ToLower()))
                 {
                     return(true);
                 }
                 else
                 {
                     return(false);
                 }
             };
         }
         else
         {
             production_executionViewSource.View.Filter = null;
         }
     }
     catch (Exception ex)
     {
         toolBar.msgError(ex);
     }
 }
예제 #3
0
        private void toolBar_btnCancel_Click(object sender)
        {
            production_execution production_execution = (production_execution)projectDataGrid.SelectedItem;

            production_execution.State = EntityState.Unchanged;
            production_executionViewSource.View.Refresh();
        }
예제 #4
0
        private void toolBar_btnNew_Click(object sender)
        {
            production_execution production_execution = ExecutionDB.NewExecustion();



            production_executionViewSource.View.MoveCurrentToLast();
        }
예제 #5
0
 private void toolBar_btnEdit_Click(object sender)
 {
     if (projectDataGrid.SelectedItem != null)
     {
         production_execution production_execution = (production_execution)projectDataGrid.SelectedItem;
         production_execution.IsSelected = true;
         production_execution.State      = EntityState.Modified;
         ExecutionDB.Entry(production_execution).State = EntityState.Modified;
     }
     else
     {
         toolBar.msgWarning("Please Select an Item");
     }
 }
예제 #6
0
        private void Insert_IntoDetail(production_order_detail production_order_detail, decimal Quantity)
        {
            production_execution        _production_execution        = (production_execution)projectDataGrid.SelectedItem;
            production_execution_detail _production_execution_detail = new entity.production_execution_detail();

            //Adds Parent so that during approval, because it is needed for approval.
            if (production_order_detail.parent != null)
            {
                if (production_order_detail.parent.production_execution_detail != null)
                {
                    _production_execution_detail.parent = production_order_detail.parent.production_execution_detail.FirstOrDefault();
                }
            }

            _production_execution_detail.State           = EntityState.Added;
            _production_execution_detail.id_item         = production_order_detail.id_item;
            _production_execution_detail.item            = production_order_detail.item;
            _production_execution_detail.quantity        = Quantity;
            _production_execution_detail.id_project_task = production_order_detail.id_project_task;

            if (production_order_detail.item.unit_cost != null)
            {
                _production_execution_detail.unit_cost = (decimal)production_order_detail.item.unit_cost;
            }

            _production_execution_detail.production_execution = _production_execution;
            _production_execution_detail.id_order_detail      = production_order_detail.id_order_detail;

            if (production_order_detail.item.is_autorecepie)
            {
                _production_execution_detail.is_input = false;
            }
            else
            {
                _production_execution_detail.is_input = true;
            }
            _production_execution.production_execution_detail.Add(_production_execution_detail);

            ExecutionDB.SaveChanges();
        }
예제 #7
0
        private void DeleteCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            try
            {
                DataGrid         exexustiondetail = (DataGrid)e.Source;
                MessageBoxResult result           = MessageBox.Show("Are you sure want to Delete?", "Delete", MessageBoxButton.YesNo, MessageBoxImage.Question);

                if (result == MessageBoxResult.Yes)
                {
                    production_execution production_execution = production_executionViewSource.View.CurrentItem as production_execution;
                    //DeleteDetailGridRow
                    exexustiondetail.CancelEdit();
                    production_execution_detail production_execution_detail = e.Parameter as production_execution_detail;
                    production_execution_detail.State = EntityState.Deleted;

                    RefreshData();
                }
            }
            catch (Exception ex)
            {
                toolBar.msgError(ex);
            }
        }
예제 #8
0
        private void btnInsert_Click(object sender, EventArgs e)
        {
            production_order_detail production_order_detail = null;
            Button  btn      = sender as Button;
            decimal Quantity = 0M;

            item.item_type type = item.item_type.Task;

            if (btn.Name.Contains("Prod"))
            {
                Quantity = Convert.ToDecimal(txtProduct.Text);
                production_order_detail = treeProduct.SelectedItem_ as production_order_detail;
                type = item.item_type.Product;
            }
            else if (btn.Name.Contains("Raw"))
            {
                Quantity = Convert.ToDecimal(txtRaw.Text);
                production_order_detail = treeRaw.SelectedItem_ as production_order_detail;
                type = item.item_type.RawMaterial;
            }
            else if (btn.Name.Contains("Asset"))
            {
                Quantity = Convert.ToDecimal(txtAsset.Text);
                production_order_detail = treeAsset.SelectedItem_ as production_order_detail;
                type = item.item_type.FixedAssets;
            }
            else if (btn.Name.Contains("Supp"))
            {
                Quantity = Convert.ToDecimal(txtSupply.Text);
                production_order_detail = treeSupply.SelectedItem_ as production_order_detail;
                type = item.item_type.Supplies;
            }
            else if (btn.Name.Contains("ServiceContract"))
            {
                Quantity = Convert.ToDecimal(txtServicecontract.Text);
                production_order_detail = treeServicecontract.SelectedItem_ as production_order_detail;
                type = item.item_type.ServiceContract;
            }

            try
            {
                if (production_order_detail.is_input)
                {
                    if (production_order_detail != null && Quantity > 0 && (
                            type == item.item_type.Product ||
                            type == item.item_type.RawMaterial ||
                            type == item.item_type.Supplies)
                        )
                    {
                        if (production_order_detail.item.item_dimension.Count() > 0)
                        {
                            Cognitivo.Configs.itemMovementFraction DimensionPanel = new Cognitivo.Configs.itemMovementFraction();
                            DimensionPanel.mode = Configs.itemMovementFraction.modes.Execution;

                            production_execution _production_execution = production_executionViewSource.View.CurrentItem as production_execution;

                            DimensionPanel.id_item                 = (int)production_order_detail.id_item;
                            DimensionPanel.ExecutionDB             = ExecutionDB;
                            DimensionPanel.production_order_detail = production_order_detail;
                            DimensionPanel._production_execution   = _production_execution;
                            DimensionPanel.Quantity                = Quantity;

                            crud_modal.Visibility = Visibility.Visible;
                            crud_modal.Children.Add(DimensionPanel);
                        }
                        else
                        {
                            Insert_IntoDetail(production_order_detail, Quantity);
                            RefreshData();
                        }
                    }
                    else
                    {
                        Insert_IntoDetail(production_order_detail, Quantity);
                        RefreshData();
                    }
                }
                else
                {
                    Insert_IntoDetail(production_order_detail, Quantity);
                    RefreshData();
                }
            }
            catch (Exception ex)
            {
                toolBar.msgError(ex);
            }
        }
예제 #9
0
        public void adddatacontact(contact contact, cntrl.ExtendedTreeView treeview)
        {
            production_order_detail production_order_detail = (production_order_detail)treeview.SelectedItem_;

            if (production_order_detail != null)
            {
                if (contact != null)
                {
                    //Product
                    int id = Convert.ToInt32(((contact)contact).id_contact);
                    if (id > 0)
                    {
                        production_execution        _production_execution        = (production_execution)production_executionViewSource.View.CurrentItem;
                        production_execution_detail _production_execution_detail = new entity.production_execution_detail();

                        //Check for contact
                        _production_execution_detail.id_contact = ((contact)contact).id_contact;
                        _production_execution_detail.contact    = contact;
                        _production_execution_detail.quantity   = 1;
                        _production_execution_detail.item       = production_order_detail.item;
                        _production_execution_detail.id_item    = production_order_detail.item.id_item;
                        _production_execution.RaisePropertyChanged("quantity");
                        _production_execution_detail.is_input = true;
                        _production_execution_detail.name     = contact.name + ": " + production_order_detail.name;

                        if (production_order_detail.id_project_task > 0)
                        {
                            _production_execution_detail.id_project_task = production_order_detail.id_project_task;
                        }

                        //Gets the Employee's contracts Hourly Rate.
                        hr_contract contract = ExecutionDB.hr_contract.Where(x => x.id_contact == id && x.is_active).FirstOrDefault();
                        if (contract != null)
                        {
                            _production_execution_detail.unit_cost = contract.Hourly;
                        }

                        if (production_order_detail.item.id_item_type == item.item_type.Service)
                        {
                            if (cmbcoefficient.SelectedValue != null)
                            {
                                _production_execution_detail.id_time_coefficient = (int)cmbcoefficient.SelectedValue;
                            }

                            string start_date = string.Format("{0} {1}", dtpstartdate.Text, dtpstarttime.Text);
                            _production_execution_detail.start_date = Convert.ToDateTime(start_date);
                            string end_date = string.Format("{0} {1}", dtpenddate.Text, dtpendtime.Text);
                            _production_execution_detail.end_date = Convert.ToDateTime(end_date);

                            _production_execution_detail.id_production_execution = _production_execution.id_production_execution;
                            _production_execution_detail.production_execution    = _production_execution;
                            _production_execution_detail.id_project_task         = production_order_detail.id_project_task;
                            _production_execution_detail.id_order_detail         = production_order_detail.id_order_detail;
                            _production_execution_detail.production_order_detail = production_order_detail;

                            ExecutionDB.production_execution_detail.Add(_production_execution_detail);
                            RefreshData();
                        }
                        else if (production_order_detail.item.id_item_type == item.item_type.ServiceContract)
                        {
                            if (cmbcoefficient.SelectedValue != null)
                            {
                                _production_execution_detail.id_time_coefficient = (int)cmbsccoefficient.SelectedValue;
                            }

                            string start_date = string.Format("{0} {1}", dtpscstartdate.Text, dtpscstarttime.Text);
                            _production_execution_detail.start_date = Convert.ToDateTime(start_date);
                            string end_date = string.Format("{0} {1}", dtpscenddate.Text, dtpscendtime.Text);
                            _production_execution_detail.end_date = Convert.ToDateTime(end_date);

                            _production_execution_detail.id_production_execution = _production_execution.id_production_execution;
                            _production_execution_detail.production_execution    = _production_execution;
                            _production_execution_detail.id_project_task         = production_order_detail.id_project_task;
                            _production_execution_detail.id_order_detail         = production_order_detail.id_order_detail;
                            _production_execution_detail.production_order_detail = production_order_detail;

                            ExecutionDB.production_execution_detail.Add(_production_execution_detail);

                            RefreshData();
                        }
                    }
                }
            }
            else
            {
                toolBar.msgWarning("select Production order for insert");
            }
        }
예제 #10
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);
        }