コード例 #1
0
ファイル: Invoice.xaml.cs プロジェクト: mercaditu/ERP
        /// <summary>
        /// Save Purchase Order
        /// </summary>
        public void PurchaseOrder_Click(object sender)
        {
            CollectionViewSource purchase_invoicepurchase_invoice_detailViewSource = FindResource("purchase_invoicepurchase_invoice_detailViewSource") as CollectionViewSource;
            purchase_invoice     purchase_invoice = (purchase_invoice)purchase_invoiceViewSource.View.CurrentItem;

            foreach (purchase_order purchase_order in pnlPurchaseOrder.selected_purchase_order)
            {
                purchase_invoice.contact    = purchase_order.contact;
                purchase_invoice.id_contact = purchase_order.id_contact;

                purchase_invoice.app_department = purchase_order.app_department;
                purchase_invoice.id_department  = purchase_order.id_department;

                purchase_invoice.app_condition = purchase_order.app_condition;
                purchase_invoice.id_condition  = purchase_order.id_condition;

                purchase_invoice.app_contract = purchase_order.app_contract;
                purchase_invoice.id_contract  = purchase_order.id_contract;

                if (purchase_order.project != null)
                {
                    purchase_invoice.project    = purchase_order.project;
                    purchase_invoice.id_project = purchase_order.id_project;
                }

                foreach (purchase_order_detail _purchase_order_detail in purchase_order.purchase_order_detail)
                {
                    if (purchase_invoice.purchase_invoice_detail.Where(x => x.id_item == _purchase_order_detail.id_item).Count() == 0)
                    {
                        purchase_invoice_detail purchase_invoice_detail = new purchase_invoice_detail();
                        purchase_invoice.State = EntityState.Modified;
                        purchase_invoice_detail.purchase_invoice         = purchase_invoice;
                        purchase_invoice_detail.id_purchase_order_detail = _purchase_order_detail.id_purchase_order_detail;
                        purchase_invoice_detail.id_vat_group             = _purchase_order_detail.id_vat_group;
                        purchase_invoice_detail.app_cost_center          = _purchase_order_detail.app_cost_center;
                        purchase_invoice_detail.id_cost_center           = _purchase_order_detail.id_cost_center;
                        purchase_invoice_detail.item             = _purchase_order_detail.item;
                        purchase_invoice_detail.id_item          = _purchase_order_detail.id_item;
                        purchase_invoice_detail.item_description = _purchase_order_detail.item_description;
                        purchase_invoice_detail.quantity         = _purchase_order_detail.quantity - PurchaseInvoiceDB.purchase_invoice_detail
                                                                   .Where(x => x.id_purchase_order_detail == _purchase_order_detail.id_purchase_order_detail)
                                                                   .GroupBy(x => x.id_purchase_order_detail).Select(x => x.Sum(y => y.quantity)).FirstOrDefault();
                        purchase_invoice_detail.unit_cost = _purchase_order_detail.unit_cost;

                        foreach (purchase_order_dimension purchase_order_dimension in _purchase_order_detail.purchase_order_dimension)
                        {
                            purchase_invoice_dimension purchase_invoice_dimension = new purchase_invoice_dimension();
                            purchase_invoice_dimension.id_dimension   = purchase_order_dimension.id_dimension;
                            purchase_invoice_dimension.value          = purchase_order_dimension.value;
                            purchase_invoice_dimension.id_measurement = purchase_order_dimension.id_measurement;

                            //Add Dimension to Detail
                            purchase_invoice_detail.purchase_invoice_dimension.Add(purchase_invoice_dimension);
                        }
                        //Add Detail to Header
                        purchase_invoice.purchase_invoice_detail.Add(purchase_invoice_detail);
                    }
                }
            }

            PurchaseInvoiceDB.Entry(purchase_invoice).Entity.State = EntityState.Added;
            purchase_invoicepurchase_invoice_detailViewSource.View.Refresh();
            crud_modal.Children.Clear();
            crud_modal.Visibility = Visibility.Collapsed;
        }
コード例 #2
0
ファイル: Invoice.xaml.cs プロジェクト: mercaditu/ERP
        private void SelectProduct_Thread(object sender, EventArgs e, purchase_invoice purchase_invoice, item item, contact contact)
        {
            purchase_invoice_detail purchase_invoice_detail = new purchase_invoice_detail();

            purchase_invoice_detail.purchase_invoice = purchase_invoice;
            Cognitivo.Purchase.InvoiceSetting InvoiceSetting = new Cognitivo.Purchase.InvoiceSetting();
            //ItemLink
            if (item != null)
            {
                purchase_invoice_detail detail_withitem = purchase_invoice.purchase_invoice_detail.Where(a => a.id_item == item.id_item).FirstOrDefault();
                if (detail_withitem != null && InvoiceSetting.AllowDuplicateItems)
                {
                    //Item Exists in Context, so add to sum.
                    purchase_invoice_detail _purchase_invoice_detail = detail_withitem;
                    _purchase_invoice_detail.quantity += 1;
                    //Return because Item exists, and will +1 in Quantity
                    return;
                }
                else
                {
                    //If Item Exists in previous purchase... then get Last Cost. Problem, will get in stored value, in future we will need to add logic to convert into current currency.
                    purchase_invoice_detail _purchase_invoice_detail = PurchaseInvoiceDB.purchase_invoice_detail
                                                                       .Where(x => x.id_item == item.id_item && x.purchase_invoice.id_contact == purchase_invoice.id_contact)
                                                                       .OrderByDescending(y => y.purchase_invoice.trans_date)
                                                                       .FirstOrDefault();
                    if (_purchase_invoice_detail != null)
                    {
                        purchase_invoice_detail.unit_cost = _purchase_invoice_detail.unit_cost;
                    }

                    //Item DOES NOT Exist in Context
                    purchase_invoice_detail.item             = item;
                    purchase_invoice_detail.id_item          = item.id_item;
                    purchase_invoice_detail.item_description = item.name;
                    purchase_invoice_detail.quantity         = 1;
                }

                foreach (item_dimension item_dimension in item.item_dimension)
                {
                    purchase_invoice_dimension purchase_invoice_dimension = new purchase_invoice_dimension();
                    purchase_invoice_dimension.id_dimension            = item_dimension.id_app_dimension;
                    purchase_invoice_dimension.app_dimension           = item_dimension.app_dimension;
                    purchase_invoice_dimension.id_measurement          = item_dimension.id_measurement;
                    purchase_invoice_dimension.app_measurement         = item_dimension.app_measurement;
                    purchase_invoice_dimension.purchase_invoice_detail = purchase_invoice_detail;
                    purchase_invoice_dimension.value = item_dimension.value;
                    purchase_invoice_detail.purchase_invoice_dimension.Add(purchase_invoice_dimension);
                }
            }
            else
            {
                Dispatcher.BeginInvoke((Action)(() =>
                {
                    purchase_invoice_detail.item_description = sbxItem.Text;
                }));
            }

            //Cost Center
            if (contact != null && contact.app_cost_center != null)
            {
                app_cost_center app_cost_center = contact.app_cost_center;
                if (app_cost_center.id_cost_center > 0)
                {
                    purchase_invoice_detail.id_cost_center = app_cost_center.id_cost_center;
                }
            }
            else
            {
                Dispatcher.BeginInvoke((Action)(() =>
                {
                    //If Contact does not exist, and If product exist, then take defualt Product Cost Center. Else, bring Administrative
                    if (item != null)
                    {
                        int id_cost_center = 0;

                        if (item.item_product != null)
                        {
                            app_cost_center app_cost_center = PurchaseInvoiceDB.app_cost_center.Where(a => a.is_product && a.is_active && a.id_company == CurrentSession.Id_Company).FirstOrDefault();
                            if (app_cost_center != null)
                            {
                                id_cost_center = Convert.ToInt32(app_cost_center.id_cost_center);
                            }
                            if (id_cost_center > 0)
                            {
                                purchase_invoice_detail.id_cost_center = id_cost_center;
                            }
                        }
                        else if (item.item_asset != null)
                        {
                            app_cost_center app_cost_center = PurchaseInvoiceDB.app_cost_center.Where(a => a.is_fixedasset == true && a.is_active == true && a.id_company == CurrentSession.Id_Company).FirstOrDefault();
                            if (app_cost_center != null)
                            {
                                id_cost_center = Convert.ToInt32(app_cost_center.id_cost_center);
                            }
                            if (id_cost_center > 0)
                            {
                                purchase_invoice_detail.id_cost_center = id_cost_center;
                            }
                        }
                    }
                    else
                    {
                        int id_cost_center = 0;
                        app_cost_center app_cost_center = PurchaseInvoiceDB.app_cost_center.Where(a => a.is_administrative == true && a.is_active == true && a.id_company == CurrentSession.Id_Company).FirstOrDefault();
                        if (app_cost_center != null)
                        {
                            id_cost_center = Convert.ToInt32(app_cost_center.id_cost_center);
                        }
                        if (id_cost_center > 0)
                        {
                            purchase_invoice_detail.id_cost_center = id_cost_center;
                        }
                    }
                }));
            }

            //VAT
            if (item != null)
            {
                if (item.id_vat_group > 0)
                {
                    purchase_invoice_detail.id_vat_group = item.id_vat_group;
                }
            }
            else if (PurchaseInvoiceDB.app_vat_group.Where(x => x.is_active && x.is_default && x.id_company == CurrentSession.Id_Company).Any())
            {
                purchase_invoice_detail.id_vat_group = PurchaseInvoiceDB.app_vat_group.Where(x => x.is_active && x.is_default && x.id_company == CurrentSession.Id_Company).FirstOrDefault().id_vat_group;
            }

            Dispatcher.BeginInvoke((Action)(() =>
            {
                purchase_invoice.purchase_invoice_detail.Add(purchase_invoice_detail);
                purchase_invoicepurchase_invoice_detailViewSource.View.Refresh();
                calculate_vat(null, null);
            }));
        }