private void sales_invoice_detailDataGrid_InitializingNewItem(object sender, InitializingNewItemEventArgs e) { sales_invoice_detail sales_invoice_detail = (sales_invoice_detail)e.NewItem; sales_invoice sales_invoice = (sales_invoice)sales_invoiceDataGrid.SelectedItem; sales_invoice_detail.sales_invoice = sales_invoice; }
private void BuyThis_GetThat(sales_promotion Promo, Invoice Invoice, sales_invoice SalesInvoice) { if (Promo.types == sales_promotion.Type.BuyThis_GetThat) { if (Invoice.Details.Where(x => x.Item.id_item == Promo.reference && x.Quantity >= Promo.quantity_step).Count() > 0) { foreach (Detail _Detail in Invoice.Details.Where(x => x.Item.id_item == Promo.reference)) { if (Promo.quantity_step > 0) { Promo _Promo = new Promo(); _Promo.Type = sales_promotion.Type.BuyThis_GetThat; _Promo.Shared = true; _Detail.Promos.Add(_Promo); List <sales_invoice_detail> sid = SalesInvoice.sales_invoice_detail.Where(x => x.id_item == Promo.reference_bonus && x.IsPromo).ToList(); //Prevent double clicking button and adding extra bonus to sale. find better way to implement. Short term code. foreach (sales_invoice_detail _Detail_ in sid) { SalesInvoice.sales_invoice_detail.Remove(_Detail_); } sales_invoice_detail sales_invoice_detail = new sales_invoice_detail(); //Needed to calculate the discounts and unit prices further on. sales_invoice_detail.State = System.Data.Entity.EntityState.Added; using (db db = new db()) { item item = db.items.Where(x => x.id_item == Promo.reference_bonus).FirstOrDefault(); if (item != null) { sales_invoice_detail.id_vat_group = item.id_vat_group; sales_invoice_detail.id_item = item.id_item; sales_invoice_detail.item_description = item.name; //sales_invoice_detail.item = item; } item_price item_price = item.item_price.Where(x => x.item_price_list.is_default == true).FirstOrDefault(); if (item_price != null) { sales_invoice_detail.unit_price = item_price.value; sales_invoice_detail.discount = item_price.value; } } sales_invoice_detail.IsPromo = true; sales_invoice_detail.quantity = Math.Floor(_Detail.Quantity / Promo.quantity_step); SalesInvoice.sales_invoice_detail.Add(sales_invoice_detail); } } } } }
//Methods public void Fill_BySales(sales_invoice_detail Detail, db db) { this.VAT_Coeficient = Detail.app_vat_group.app_vat_group_details.Sum(x => x.app_vat.coefficient); this.UnitValue_WithVAT = Detail.SubTotal_Vat; this.Comment = Detail.item_description; entity.DebeHaber.CostCenter CostCenter = new entity.DebeHaber.CostCenter(); // If Item being sold is FixedAsset, get Cost Center will be the GroupName. if (Detail.item.id_item_type == entity.item.item_type.FixedAssets) { CostCenter.Name = db.item_asset.Where(x => x.id_item == Detail.id_item).FirstOrDefault().item_asset_group != null?db.item_asset.Where(x => x.id_item == Detail.id_item).FirstOrDefault().item_asset_group.name : ""; CostCenter.Type = entity.DebeHaber.CostCenterTypes.FixedAsset; //Add CostCenter into Detail. this.CostCenter.Add(CostCenter); } // If Item being sold is a Service, Contract, or Task. Take it as Direct Revenue. else if (Detail.item.id_item_type == entity.item.item_type.Service || Detail.item.id_item_type == entity.item.item_type.Task || Detail.item.id_item_type == entity.item.item_type.ServiceContract) { if (db.items.Where(x => x.id_item == Detail.id_item).FirstOrDefault().item_tag_detail.FirstOrDefault() != null) { CostCenter.Name = db.items.Where(x => x.id_item == Detail.id_item).FirstOrDefault().item_tag_detail.FirstOrDefault().item_tag.name; } else { CostCenter.Name = Detail.item_description; } CostCenter.Type = entity.DebeHaber.CostCenterTypes.Income; //Add CostCenter into Detail. this.CostCenter.Add(CostCenter); } // Finally if all else fails, assume Item being sold is Merchendice. else { if (db.app_cost_center.Where(x => x.is_product).FirstOrDefault() != null) { CostCenter.Name = db.app_cost_center.Where(x => x.is_product).FirstOrDefault().name; CostCenter.Type = entity.DebeHaber.CostCenterTypes.Merchendice; } else { CostCenter.Name = "Mercaderia"; CostCenter.Type = entity.DebeHaber.CostCenterTypes.Merchendice; } //Add CostCenter into Detail. this.CostCenter.Add(CostCenter); } }
private void btnSave_Click(object sender, RoutedEventArgs e) { if (project != null) { List <project_task> project_task = project.project_task.Where(x => x.IsSelected).ToList(); sales_invoice sales_invoice = new entity.sales_invoice(); sales_invoice.id_contact = (int)project.id_contact; sales_invoice.contact = db.contacts.Where(x => x.id_contact == (int)project.id_contact).FirstOrDefault(); sales_invoice.id_project = project.id_project; sales_invoice.id_condition = (int)cbxCondition.SelectedValue; sales_invoice.id_contract = (int)cbxContract.SelectedValue; sales_invoice.id_currencyfx = (int)cbxCurrency.SelectedValue; sales_invoice.comment = "Project -> " + project.name; sales_invoice_detail sales_invoice_detail = null; foreach (project_task _project_task in project_task) { if (_project_task.items.id_item_type == item.item_type.Task) { sales_invoice_detail = new sales_invoice_detail(); sales_invoice_detail.id_sales_invoice = sales_invoice.id_sales_invoice; sales_invoice_detail.sales_invoice = sales_invoice; sales_invoice_detail.id_item = (int)_project_task.id_item; sales_invoice_detail.item_description = _project_task.item_description; sales_invoice_detail.quantity = (decimal)(_project_task.quantity_est == null ? 0M : _project_task.quantity_est); sales_invoice_detail.UnitPrice_Vat = (decimal)(_project_task.unit_price_vat == null ? 0M : _project_task.unit_price_vat); sales_invoice_detail.id_project_task = _project_task.id_project_task; _project_task.IsSelected = false; } else { if (sales_invoice_detail != null) { sales_invoice_detail.id_project_task = _project_task.id_project_task; _project_task.IsSelected = false; } } sales_invoice.sales_invoice_detail.Add(sales_invoice_detail); } sales_invoice.State = EntityState.Added; sales_invoice.IsSelected = true; db.sales_invoice.Add(sales_invoice); db.SaveChanges(); btnCancel_Click(null, null); } }
public void SalesOrder_Click(object sender) { sales_invoice _sales_invoice = (sales_invoice)sales_invoiceViewSource.View.CurrentItem; sbxContact.Text = pnlSalesOrder.selected_sales_order.FirstOrDefault().contact.name; foreach (sales_order sales_order in pnlSalesOrder.selected_sales_order) { _sales_invoice.State = EntityState.Modified; _sales_invoice.contact = sales_order.contact; cbxContactRelation.ItemsSource = SalesInvoiceDB.contacts.Where(x => x.parent.id_contact == sales_order.contact.id_contact).ToList(); _sales_invoice.id_contact = sales_order.contact.id_contact; _sales_invoice.id_condition = sales_order.id_condition; _sales_invoice.id_contract = sales_order.id_contract; _sales_invoice.id_currencyfx = sales_order.id_currencyfx; _sales_invoice.app_currencyfx = sales_order.app_currencyfx; _sales_invoice.id_sales_order = sales_order.id_sales_order; foreach (sales_order_detail _sales_order_detail in sales_order.sales_order_detail) { sales_invoice_detail sales_invoice_detail = new sales_invoice_detail(); //There is an issue that the detail does not know of the currency previously selected. Maybe this can help. sales_invoice_detail.CurrencyFX_ID = sales_order.app_currencyfx.id_currencyfx; sales_invoice_detail.id_sales_order_detail = _sales_order_detail.id_sales_order_detail; sales_invoice_detail.sales_order_detail = _sales_order_detail; sales_invoice_detail.Contact = _sales_invoice.contact; sales_invoice_detail.sales_invoice = _sales_invoice; sales_invoice_detail.item = _sales_order_detail.item; sales_invoice_detail.id_item = _sales_order_detail.id_item; sales_invoice_detail.quantity = _sales_order_detail.quantity - SalesInvoiceDB.sales_invoice_detail .Where(x => x.id_sales_order_detail == _sales_order_detail.id_sales_order_detail) .GroupBy(x => x.id_sales_order_detail) .Select(x => x.Sum(y => y.quantity)) .FirstOrDefault(); sales_invoice_detail.unit_price = _sales_order_detail.unit_price; _sales_invoice.sales_invoice_detail.Add(sales_invoice_detail); } SalesInvoiceDB.Entry(_sales_invoice).Entity.State = EntityState.Added; crud_modal.Children.Clear(); crud_modal.Visibility = Visibility.Collapsed; sales_invoiceViewSource.View.Refresh(); sales_invoicesales_invoice_detailViewSource.View.Refresh(); } _sales_invoice.RaisePropertyChanged("GrandTotal"); }
public void Link_Click(object sender) { sales_invoice _sales_invoice = (sales_invoice)sales_invoiceViewSource.View.CurrentItem; foreach (sales_packing item in pnlPacking.selected_sales_packing) { sales_packing sales_packing = SalesInvoiceDB.sales_packing.Where(x => x.id_sales_packing == item.id_sales_packing).FirstOrDefault(); foreach (sales_packing_detail _sales_packing_detail in sales_packing.sales_packing_detail) { if (_sales_invoice.sales_invoice_detail.Where(x => x.id_item == _sales_packing_detail.id_item).Count() == 0) { sales_invoice_detail sales_invoice_detail = new sales_invoice_detail(); sales_invoice_detail.sales_invoice = _sales_invoice; sales_invoice_detail.Contact = SalesInvoiceDB.contacts.Where(x => x.id_contact == sbxContact.ContactID).FirstOrDefault();// sbxContact.Contact; sales_invoice_detail.item = _sales_packing_detail.item; sales_invoice_detail.id_item = _sales_packing_detail.id_item; sales_invoice_detail.quantity = _sales_packing_detail.quantity; // sales_invoice_detail.unit_price = 0; sales_packing_relation sales_packing_relation = new sales_packing_relation(); sales_packing_relation.id_sales_packing_detail = _sales_packing_detail.id_sales_packing_detail; sales_packing_relation.sales_packing_detail = _sales_packing_detail; sales_invoice_detail.sales_packing_relation.Add(sales_packing_relation); _sales_invoice.sales_invoice_detail.Add(sales_invoice_detail); } } CollectionViewSource sales_invoicesales_invoice_detailViewSource = FindResource("sales_invoicesales_invoice_detailViewSource") as CollectionViewSource; sales_invoicesales_invoice_detailViewSource.View.Refresh(); sales_invoicesales_invoice_detailViewSource.View.MoveCurrentToFirst(); } CollectionViewSource sales_invoicesales_invoice_detailsales_packinglist_relationViewSource = FindResource("sales_invoicesales_invoice_detailsales_packinglist_relationViewSource") as CollectionViewSource; if (sales_invoicesales_invoice_detailsales_packinglist_relationViewSource != null) { sales_invoicesales_invoice_detailsales_packinglist_relationViewSource.Source = SalesInvoiceDB.sales_packing_relation.Local.Where(x => x.sales_invoice_detail.id_sales_invoice == _sales_invoice.id_sales_invoice).ToList(); } else { sales_invoicesales_invoice_detailsales_packinglist_relationViewSource.Source = null; } crud_modal.Children.Clear(); crud_modal.Visibility = Visibility.Collapsed; _sales_invoice.RaisePropertyChanged("GrandTotal"); }
private void item_Select(object sender, EventArgs e) { if (sbxItem.ItemID > 0) { int BranchID = (int)cbxBranch.SelectedValue; Class.StockCalculations StockCalculations = new Cognitivo.Class.StockCalculations(); Settings SalesSettings = new Settings(); sales_invoice sales_invoice = sales_invoiceViewSource.View.CurrentItem as sales_invoice; item item = SalesInvoiceDB.items.Where(x => x.id_item == sbxItem.ItemID).FirstOrDefault(); sales_invoice_detail _sales_invoice_detail = SalesInvoiceDB.Select_Item(ref sales_invoice, item, SalesSettings.AllowDuplicateItem); _sales_invoice_detail.Quantity_InStock = StockCalculations.Count_ByBranch(BranchID, item.id_item, DateTime.Now); sales_invoicesales_invoice_detailViewSource.View.Refresh(); sales_invoice.RaisePropertyChanged("GrandTotal"); } }
private void sbxItem_Select(object sender, RoutedEventArgs e) { if (sbxItem.ItemID > 0) { sales_invoice sales_invoice = sales_invoiceViewSource.View.CurrentItem as sales_invoice; item item = SalesInvoiceDB.items.Where(x => x.id_item == sbxItem.ItemID).FirstOrDefault(); sales_invoice_detail _sales_invoice_detail = SalesInvoiceDB.Select_Item(ref sales_invoice, item, false); Class.StockCalculations StockCalculations = new Cognitivo.Class.StockCalculations(); _sales_invoice_detail.Quantity_InStock = StockCalculations.Count_ByBranch(CurrentSession.Id_Branch, item.id_item, DateTime.Now); CollectionViewSource sales_invoicesales_invoice_detailViewSource = FindResource("sales_invoicesales_invoice_detailViewSource") as CollectionViewSource; sales_invoicesales_invoice_detailViewSource.View.Refresh(); sales_invoiceViewSource.View.Refresh(); paymentViewSource.View.Refresh(); btnPromotion_Click(sender, e); } }
private void DeleteCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e) { try { MessageBoxResult result = MessageBox.Show("Are you sure want to Delete?", "Delete", MessageBoxButton.YesNo, MessageBoxImage.Question); if (result == MessageBoxResult.Yes) { sales_invoice_detail sales_invoice_detail = e.Parameter as sales_invoice_detail; if (sales_invoice_detail != null) { //DeleteDetailGridRow dgvSalesDetail.CancelEdit(); sales_invoice sales_invoice = sales_invoiceViewSource.View.CurrentItem as sales_invoice; sales_invoice.sales_invoice_detail.Remove(sales_invoice_detail); sales_invoiceViewSource.View.Refresh(); CollectionViewSource sales_invoicesales_invoice_detailViewSource = FindResource("sales_invoicesales_invoice_detailViewSource") as CollectionViewSource; sales_invoicesales_invoice_detailViewSource.View.Refresh(); btnPromotion_Click(sender, e); } else if (e.Parameter as payment_detail != null) { payment payment = paymentViewSource.View.CurrentItem as payment; //DeleteDetailGridRow dgvPaymentDetail.CancelEdit(); payment.payment_detail.Remove(e.Parameter as payment_detail); paymentViewSource.View.Refresh(); CollectionViewSource paymentpayment_detailViewSource = FindResource("paymentpayment_detailViewSource") as CollectionViewSource; paymentpayment_detailViewSource.View.Refresh(); } } } catch (Exception ex) { throw ex; } }
public void sales() { string sql = " SELECT " + " dbo.VENTAS.CODVENTA, dbo.VENTAS.NUMVENTA, dbo.VENTAS.FECHAVENTA, dbo.VENTAS.PORCENTAJEDESCUENTO," + " dbo.VENTAS.TOTALEXENTA, dbo.VENTAS.TOTALGRAVADA, dbo.VENTAS.TOTALIVA, dbo.VENTAS.TOTALDESCUENTO," + " dbo.VENTAS.MODALIDADPAGO, dbo.VENTAS.FECGRA, dbo.VENTAS.ESTADO, dbo.VENTAS.MOTIVOANULADO," + " dbo.VENTAS.FECHAANULADO, dbo.VENTAS.TIPOVENTA, dbo.VENTAS.TIPOPRECIO, dbo.VENTAS.NUMVENTATIMBRADO," + " dbo.VENTAS.TOTAL5, dbo.VENTAS.TOTAL10, dbo.VENTAS.CODPRESUPUESTO, dbo.VENTAS.METODO, dbo.VENTAS.ENVIADO," + " dbo.VENTAS.TOTALGRAVADO5, dbo.VENTAS.TOTALGRAVADO10, dbo.VENTAS.ASENTADO," + " dbo.VENTAS.TOTALVENTA, dbo.VENDEDOR.DESVENDEDOR, dbo.CLIENTES.NOMBRE, dbo.CLIENTES.RUC," + " dbo.SUCURSAL.DESSUCURSAL, dbo.VENTAS.COTIZACION1, FACTURACOBRAR_1.FECHAVCTO," + " dbo.FACTURACOBRAR.FECHAVCTO AS Expr1, dbo.FACTURACOBRAR.SALDOCUOTA, dbo.FACTURACOBRAR.IMPORTECUOTA, " + " dbo.FACTURACOBRAR.COTIZACION, dbo.VENTASFORMACOBRO.IMPORTE, dbo.VENTASFORMACOBRO.DESTIPOCOBRO," + " dbo.VENTASFORMACOBRO.NUMDEVOLUCION, dbo.VENTASFORMACOBRO.TIPOCOBRO" + " FROM dbo.SUCURSAL RIGHT OUTER JOIN" + " dbo.FACTURACOBRAR RIGHT OUTER JOIN" + " dbo.VENTAS ON dbo.FACTURACOBRAR.CODVENTA = dbo.VENTAS.CODVENTA LEFT OUTER JOIN" + " dbo.VENTASFORMACOBRO ON dbo.VENTAS.CODVENTA = dbo.VENTASFORMACOBRO.CODVENTA ON dbo.SUCURSAL.CODSUCURSAL = dbo.VENTAS.CODSUCURSAL" + " LEFT OUTER JOIN dbo.VENDEDOR ON dbo.VENTAS.CODVENDEDOR = dbo.VENDEDOR.CODVENDEDOR LEFT OUTER JOIN" + " dbo.CLIENTES ON dbo.VENTAS.CODCLIENTE = dbo.CLIENTES.CODCLIENTE LEFT OUTER JOIN" + " dbo.FACTURACOBRAR AS FACTURACOBRAR_1 ON dbo.VENTAS.CODVENTA = FACTURACOBRAR_1.CODVENTA"; SqlConnection conn = new SqlConnection(_connString); //Counts Total number of Rows we have to process SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); cmd.CommandType = CommandType.Text; DataTable dt_sales = exeDT(sql); int count = (int)dt_sales.Rows.Count; conn.Close(); int value = 0; Dispatcher.BeginInvoke((Action)(() => salesMaximum.Text = count.ToString())); Dispatcher.BeginInvoke((Action)(() => salesValue.Text = value.ToString())); Dispatcher.BeginInvoke((Action)(() => progSales.Maximum = count)); Dispatcher.BeginInvoke((Action)(() => progSales.Value = value)); //Sales Invoice Detail string sqlDetail = "SELECT" + " dbo.PRODUCTOS.DESPRODUCTO," //0 + " dbo.VENTASDETALLE.CANTIDADVENTA," //1 + " dbo.VENTASDETALLE.PRECIOVENTANETO, " //2 + " dbo.VENTASDETALLE.PRECIOVENTALISTA, " //3 + " dbo.VENTASDETALLE.COSTOPROMEDIO, " //4 + " dbo.VENTASDETALLE.COSTOULTIMO, " //5 + " dbo.VENTASDETALLE.IVA, " //6 + " dbo.VENTAS.COTIZACION1, " //7 + " dbo.MONEDA.DESMONEDA, " //8 + " dbo.VENTASDETALLE.CODVENTA" + " FROM dbo.VENTAS LEFT OUTER JOIN" + " dbo.MONEDA ON dbo.VENTAS.CODMONEDA = dbo.MONEDA.CODMONEDA LEFT OUTER JOIN" + " dbo.VENTASDETALLE ON dbo.VENTAS.CODVENTA = dbo.VENTASDETALLE.CODVENTA LEFT OUTER JOIN" + " dbo.PRODUCTOS ON dbo.VENTASDETALLE.CODPRODUCTO = dbo.PRODUCTOS.CODPRODUCTO"; DataTable dt_detail = exeDT(sqlDetail); int RoofValue = 1000; int FloorValue = 0; //Run a Foreach Lap for (int i = FloorValue; i < RoofValue; i++) { using (SalesInvoiceDB db = new SalesInvoiceDB()) { db.Configuration.AutoDetectChangesEnabled = false; List <entity.app_vat_group> VATGroupList = db.app_vat_group.Where(x => x.id_company == CurrentSession.Id_Company).ToList(); List <entity.contact> ContactList = db.contacts.Where(x => x.id_company == CurrentSession.Id_Company).ToList(); List <entity.sales_rep> sales_repList = db.sales_rep.Where(x => x.id_company == CurrentSession.Id_Company).ToList(); List <entity.app_branch> BranchList = db.app_branch.Where(x => x.id_company == CurrentSession.Id_Company).ToList(); List <entity.app_location> LocationList = db.app_location.Where(x => x.id_company == CurrentSession.Id_Company).ToList(); List <entity.app_terminal> TerminalList = db.app_terminal.Where(x => x.id_company == CurrentSession.Id_Company).ToList(); List <entity.item> ItemList = db.items.Where(x => x.id_company == CurrentSession.Id_Company).ToList(); List <entity.app_currencyfx> app_currencyfxList = db.app_currencyfx.Where(x => x.id_company == CurrentSession.Id_Company).ToList(); app_condition app_conditionCrédito = db.app_condition.Where(x => x.name == "Crédito" && x.id_company == id_company).FirstOrDefault(); app_condition app_conditionContado = db.app_condition.Where(x => x.name == "Contado" && x.id_company == id_company).FirstOrDefault(); app_currencyfx app_currencyfx = null; if (app_currencyfxList.Where(x => x.is_active).FirstOrDefault() != null) { app_currencyfx = app_currencyfxList.Where(x => x.is_active).FirstOrDefault(); } app_vat_group app_vat_group10 = VATGroupList.Where(x => x.name.Contains("10")).FirstOrDefault(); app_vat_group app_vat_group5 = VATGroupList.Where(x => x.name.Contains("5")).FirstOrDefault(); app_vat_group app_vat_group0 = VATGroupList.Where(x => x.name.Contains("0")).FirstOrDefault(); foreach (DataRow InnerRow in dt_sales.Select("CODVENTA > " + FloorValue + " AND CODVENTA < " + RoofValue + "")) { sales_invoice sales_invoice = new entity.sales_invoice(); sales_invoice.State = EntityState.Added; sales_invoice.status = Status.Documents_General.Pending; sales_invoice.IsSelected = true; sales_invoice.trans_type = Status.TransactionTypes.Normal; sales_invoice.trans_date = DateTime.Now.AddDays(0); sales_invoice.timestamp = DateTime.Now; sales_invoice.id_company = id_company; sales_invoice.number = (InnerRow["NUMVENTA"] is DBNull) ? null : InnerRow["NUMVENTA"].ToString(); sales_invoice.trans_date = (InnerRow["FECHAVENTA"] is DBNull) ? DateTime.Now :Convert.ToDateTime(InnerRow["FECHAVENTA"]); //Customer if (!(InnerRow["NOMBRE"] is DBNull)) { string _customer = InnerRow["NOMBRE"].ToString(); contact contact = ContactList.Where(x => x.name == _customer && x.id_company == id_company).FirstOrDefault(); if (contact != null) { sales_invoice.id_contact = contact.id_contact; sales_invoice.contact = contact; } } //Condition (Cash or Credit) if (!(InnerRow["TIPOVENTA"] is DBNull) && Convert.ToByte(InnerRow["TIPOVENTA"]) == 0) { sales_invoice.id_condition = app_conditionContado.id_condition; //Contract... app_contract_detail app_contract_detail = db.app_contract_detail.Where(x => x.id_company == id_company && x.app_contract.id_condition == app_conditionContado.id_condition) .FirstOrDefault(); if (app_contract_detail != null) { sales_invoice.app_contract = app_contract_detail.app_contract; sales_invoice.id_contract = app_contract_detail.id_contract; } else { app_contract app_contract = GenerateDefaultContrat(app_conditionContado, 0); db.app_contract.Add(app_contract); sales_invoice.app_contract = app_contract; sales_invoice.id_contract = app_contract.id_contract; } } else if (!(InnerRow["TIPOVENTA"] is DBNull) && Convert.ToByte(InnerRow["TIPOVENTA"]) == 1) { sales_invoice.id_condition = app_conditionCrédito.id_condition; //Contract... if (!(InnerRow["FECHAVCTO"] is DBNull)) { DateTime _due_date = Convert.ToDateTime(InnerRow["FECHAVCTO"]); int interval = (_due_date - sales_invoice.trans_date).Days; app_contract_detail app_contract_detail = db.app_contract_detail.Where(x => x.app_contract.id_condition == sales_invoice.id_condition && x.app_contract.id_company == id_company && x.interval == interval).FirstOrDefault(); if (app_contract_detail != null) { sales_invoice.app_contract = app_contract_detail.app_contract; sales_invoice.id_contract = app_contract_detail.id_contract; } else { app_contract app_contract = GenerateDefaultContrat(app_conditionCrédito, interval); db.app_contract.Add(app_contract); sales_invoice.app_contract = app_contract; sales_invoice.id_contract = app_contract.id_contract; } } else { if (db.app_contract.Where(x => x.name == "0 Días").Count() == 0) { app_contract app_contract = GenerateDefaultContrat(app_conditionCrédito, 0); db.app_contract.Add(app_contract); sales_invoice.app_contract = app_contract; sales_invoice.id_contract = app_contract.id_contract; } else { app_contract app_contract = db.app_contract.Where(x => x.name == "0 Días").FirstOrDefault(); sales_invoice.app_contract = app_contract; sales_invoice.id_contract = app_contract.id_contract; } } } else { sales_invoice.id_condition = app_conditionContado.id_condition; if (db.app_contract.Where(x => x.name == "0 Días").Count() == 0) { app_contract app_contract = GenerateDefaultContrat(app_conditionContado, 0); db.app_contract.Add(app_contract); sales_invoice.app_contract = app_contract; sales_invoice.id_contract = app_contract.id_contract; } else { app_contract app_contract = db.app_contract.Where(x => x.name == "0 Días").FirstOrDefault(); sales_invoice.app_contract = app_contract; sales_invoice.id_contract = app_contract.id_contract; } } //Sales Rep if (!(InnerRow["DESVENDEDOR"] is DBNull)) { string _sales_rep = InnerRow["DESVENDEDOR"].ToString(); sales_rep sales_rep = sales_repList.Where(x => x.name == _sales_rep && x.id_company == id_company).FirstOrDefault(); sales_invoice.id_sales_rep = sales_rep.id_sales_rep; } int id_location = 0; app_location app_location = null; //Branch if (!(InnerRow["DESSUCURSAL"] is DBNull)) { //Branch string _branch = InnerRow["DESSUCURSAL"].ToString(); app_branch app_branch = BranchList.Where(x => x.name == _branch && x.id_company == id_company).FirstOrDefault(); sales_invoice.id_branch = app_branch.id_branch; //Location if (LocationList.Where(x => x.id_branch == app_branch.id_branch && x.is_default).FirstOrDefault() != null) { id_location = LocationList.Where(x => x.id_branch == app_branch.id_branch && x.is_default).FirstOrDefault().id_location; app_location = LocationList.Where(x => x.id_branch == app_branch.id_branch && x.is_default).FirstOrDefault(); } //Terminal sales_invoice.id_terminal = TerminalList.Where(x => x.app_branch.id_branch == app_branch.id_branch).FirstOrDefault().id_terminal; } if (app_currencyfx != null) { sales_invoice.id_currencyfx = app_currencyfx.id_currencyfx; sales_invoice.app_currencyfx = app_currencyfx; } DataTable dt_CurrentDetail = new DataTable(); if (dt_detail.Select("CODVENTA =" + InnerRow[0].ToString()).Count() > 0) { dt_CurrentDetail = dt_detail.Select("CODVENTA =" + InnerRow[0].ToString()).CopyToDataTable(); } foreach (DataRow row in dt_CurrentDetail.Rows) { //db Related Insertion. sales_invoice_detail sales_invoice_detail = new sales_invoice_detail(); string _prod_Name = row["DESPRODUCTO"].ToString(); item item = ItemList.Where(x => x.name == _prod_Name && x.id_company == id_company).FirstOrDefault(); sales_invoice_detail.id_item = item.id_item; sales_invoice_detail.quantity = Convert.ToDecimal(row["CANTIDADVENTA"]); sales_invoice_detail.id_location = id_location; sales_invoice_detail.app_location = app_location; string _iva = row["IVA"].ToString(); if (_iva == "10.00") { if (app_vat_group10 != null) { sales_invoice_detail.id_vat_group = app_vat_group10.id_vat_group; } } else if (_iva == "5.00") { if (app_vat_group5 != null) { sales_invoice_detail.id_vat_group = app_vat_group5.id_vat_group; } } else { if (app_vat_group0 != null) { sales_invoice_detail.id_vat_group = app_vat_group0.id_vat_group; } } decimal cotiz1 = Convert.ToDecimal((row["COTIZACION1"] is DBNull) ? 1 : Convert.ToDecimal(row["COTIZACION1"])); if (cotiz1 == 0) { cotiz1 = 1; } sales_invoice_detail.unit_price = (Convert.ToDecimal(row["PRECIOVENTANETO"]) / sales_invoice_detail.quantity) / cotiz1; sales_invoice_detail.unit_cost = Convert.ToDecimal(row["COSTOPROMEDIO"]); //Commit Sales Invoice Detail sales_invoice.sales_invoice_detail.Add(sales_invoice_detail); } if (sales_invoice.Error == null) { sales_invoice.State = System.Data.Entity.EntityState.Added; sales_invoice.IsSelected = true; db.sales_invoice.Add(sales_invoice); if (!(InnerRow["ESTADO"] is DBNull)) { int status = Convert.ToInt32(InnerRow["ESTADO"]); if (status == 0) { sales_invoice.status = Status.Documents_General.Pending; } else if (status == 1) { db.Approve(true); sales_invoice.State = System.Data.Entity.EntityState.Modified; sales_invoice.status = Status.Documents_General.Approved; sales_invoice.IsSelected = true; add_paymnet_detail(db, sales_invoice, InnerRow["SALDOCUOTA"], InnerRow["IMPORTE"]); } else if (status == 2) { sales_invoice.status = Status.Documents_General.Annulled; if (!(InnerRow["MOTIVOANULADO"] is DBNull)) { sales_invoice.comment = InnerRow["MOTIVOANULADO"].ToString(); } } try { db.SaveChanges(); sales_invoice.IsSelected = false; } catch (Exception ex) { throw ex; } } } else { //Add code to include error contacts into SalesInvoice_ErrorList.Add(sales_invoice); } // } value += 1; Dispatcher.BeginInvoke((Action)(() => progSales.Value = value)); Dispatcher.BeginInvoke((Action)(() => salesValue.Text = value.ToString())); } } FloorValue = RoofValue; RoofValue += 1000; } }
private void SyncSalesInvoice(List <contact> ContactList, DateTime InvoiceDate) { app_vat_group VatGroup = CurrentSession.Get_VAT_Group().Where(x => x.is_default).FirstOrDefault(); foreach (contact Contact in ContactList) { try { sales_invoice sales_invoice = new sales_invoice(); sales_invoice.id_contact = Contact.id_contact; sales_invoice.contact = Contact; app_contract app_contract = ContactDB.app_contract.Where(x => x.id_contract == Contact.id_contract).FirstOrDefault(); sales_invoice.id_condition = app_contract.id_condition; sales_invoice.id_contract = app_contract.id_contract; sales_invoice.id_currencyfx = CurrentSession.CurrencyFX_Default.id_currencyfx; sales_invoice.comment = "Subscription"; sales_invoice.trans_date = InvoiceDate; sales_invoice.timestamp = DateTime.Now; if (Contact.contact_subscription.Count > 0) { foreach (contact_subscription contact_subscription in Contact.contact_subscription) { sales_invoice_detail sales_invoice_detail = null; sales_invoice_detail = new sales_invoice_detail(); sales_invoice_detail.id_sales_invoice = sales_invoice.id_sales_invoice; sales_invoice_detail.sales_invoice = sales_invoice; item item = ContactDB.items.Where(x => x.id_item == contact_subscription.id_item).FirstOrDefault(); if (item != null) { sales_invoice_detail.item = item; sales_invoice_detail.id_vat_group = contact_subscription.id_vat_group > 0 ? contact_subscription.id_vat_group : VatGroup.id_vat_group; sales_invoice_detail.id_item = contact_subscription.id_item; sales_invoice_detail.item_description = contact_subscription.item.name; } else { continue; } sales_invoice_detail.quantity = contact_subscription.quantity; sales_invoice_detail.UnitPrice_Vat = contact_subscription.UnitPrice_Vat; sales_invoice.sales_invoice_detail.Add(sales_invoice_detail); } if (sales_invoice.sales_invoice_detail.Count > 0) { sales_invoice.State = EntityState.Added; sales_invoice.IsSelected = true; crm_opportunity crm_opportunity = new crm_opportunity(); crm_opportunity.id_contact = sales_invoice.id_contact; crm_opportunity.id_currency = sales_invoice.id_currencyfx; crm_opportunity.value = sales_invoice.GrandTotal; crm_opportunity.sales_invoice.Add(sales_invoice); ContactDB.crm_opportunity.Add(crm_opportunity); ContactDB.sales_invoice.Add(sales_invoice); ContactDB.SaveChanges(); progBar.Value += 1; // Dispatcher.BeginInvoke((Action)(() => { progBar.Value += 1; })); } } } catch (Exception) { // Dispatcher.BeginInvoke((Action)(() => { Contact.IsSelected = true; })); } } }
private void btnSave_Click(object sender, RoutedEventArgs e) { if (project != null) { toolBar toolBar = new cntrl.toolBar(); List <project_task> project_taskLIST = project.project_task.Where(x => x.IsSelected).ToList(); sales_order sales_order = new entity.sales_order(); if (Generate_Budget) { SalesBudgetDB SalesBudgetDB = new SalesBudgetDB(); sales_budget sales_budget = new entity.sales_budget(); sales_budget.id_contact = (int)project.id_contact; sales_budget.contact = SalesBudgetDB.contacts.Where(x => x.id_contact == (int)project.id_contact).FirstOrDefault(); sales_budget.id_project = project.id_project; sales_budget.id_condition = (int)cbxCondition.SelectedValue; sales_budget.id_contract = (int)cbxContract.SelectedValue; sales_budget.id_currencyfx = (int)cbxCurrency.SelectedValue; sales_budget.comment = "Project -> " + project.name; sales_budget.trans_date = DateTime.Now; foreach (project_task _project_task in project_taskLIST) { sales_budget_detail sales_budget_detail = new sales_budget_detail(); sales_budget_detail.State = EntityState.Added; sales_budget_detail.id_sales_budget = sales_budget.id_sales_budget; sales_budget_detail.sales_budget = sales_budget; sales_budget_detail.id_item = (int)_project_task.id_item; sales_budget_detail.item_description = _project_task.item_description; if (project.is_Executable) { sales_budget_detail.quantity = (decimal)_project_task.quantity_exe; } else { sales_budget_detail.quantity = (decimal)_project_task.quantity_est; } if (_project_task.unit_price_vat != null) { sales_budget_detail.UnitPrice_Vat = (decimal)_project_task.unit_price_vat; } sales_budget_detail.id_project_task = _project_task.id_project_task; _project_task.IsSelected = false; sales_budget.sales_budget_detail.Add(sales_budget_detail); } sales_budget.State = EntityState.Added; sales_budget.IsSelected = true; SalesBudgetDB.sales_budget.Add(sales_budget); SalesBudgetDB.SaveChanges(); } else { //if (Generate_Budget) //{ // sales_order.id_sales_budget = sales_budget.id_sales_budget; //} if (SalesOrderDB.contacts.Where(x => x.id_contact == (int)project.id_contact).FirstOrDefault() != null) { sales_order.id_contact = (int)project.id_contact; sales_order.contact = SalesOrderDB.contacts.Where(x => x.id_contact == (int)project.id_contact).FirstOrDefault(); } else { toolBar.msgWarning("Contact Not Found..."); return; } if (Generate_Invoice) { if (cbxDocument.SelectedValue != null) { sales_order.id_range = (int)cbxDocument.SelectedValue; } else { toolBar.msgWarning("Document Range Needed for Approval"); // return; } } sales_order.id_project = project.id_project; if (Convert.ToInt16(cbxCondition.SelectedValue) > 0) { sales_order.id_condition = (int)cbxCondition.SelectedValue; } else { toolBar.msgWarning("Condition Not Found..."); return; } if (Convert.ToInt16(cbxContract.SelectedValue) > 0) { sales_order.id_contract = (int)cbxContract.SelectedValue; } else { toolBar.msgWarning("Contract Not Found..."); return; } if (Convert.ToInt16(cbxCurrency.SelectedValue) > 0) { sales_order.id_currencyfx = (int)cbxCurrency.SelectedValue; } else { toolBar.msgWarning("Currency Not Found..."); return; } sales_order.comment = "Project -> " + project.name; sales_order_detail sales_order_detail = null; foreach (project_task _project_task in project_taskLIST) { if (_project_task.items.id_item_type == item.item_type.Task || _project_task.sales_detail == null) { sales_order_detail = new sales_order_detail(); sales_order_detail.State = EntityState.Added; sales_order_detail.id_sales_order = sales_order.id_sales_order; sales_order_detail.sales_order = sales_order; if (Convert.ToInt16(_project_task.id_item) > 0) { sales_order_detail.id_item = (int)_project_task.id_item; } sales_order_detail.item_description = _project_task.item_description; if (project.is_Executable) { sales_order_detail.quantity = (decimal)_project_task.quantity_exe; } else { sales_order_detail.quantity = (decimal)_project_task.quantity_est; } if (_project_task.unit_price_vat != null) { sales_order_detail.UnitPrice_Vat = (decimal)_project_task.unit_price_vat; } sales_order_detail.id_project_task = _project_task.id_project_task; _project_task.IsSelected = false; _project_task.sales_detail = sales_order_detail; } if (sales_order_detail != null) { sales_order.sales_order_detail.Add(sales_order_detail); } } if (sales_order.sales_order_detail.Count() > 0) { sales_order.State = EntityState.Added; sales_order.IsSelected = true; SalesOrderDB.sales_order.Add(sales_order); SalesOrderDB.SaveChanges(); if (Generate_Invoice) { SalesOrderDB.Approve(); sales_invoice sales_invoice = new entity.sales_invoice(); if (SalesOrderDB.app_document_range.Where(x => x.app_document.id_application == App.Names.SalesBudget).FirstOrDefault() != null) { sales_invoice.id_range = SalesOrderDB.app_document_range.Where(x => x.app_document.id_application == App.Names.SalesInvoice).FirstOrDefault().id_range; } sales_invoice.id_contact = (int)project.id_contact; sales_invoice.contact = SalesOrderDB.contacts.Where(x => x.id_contact == (int)project.id_contact).FirstOrDefault(); sales_invoice.sales_order = sales_order; sales_invoice.id_project = project.id_project; sales_invoice.id_condition = (int)cbxCondition.SelectedValue; sales_invoice.id_contract = (int)cbxContract.SelectedValue; sales_invoice.id_currencyfx = (int)cbxCurrency.SelectedValue; sales_invoice.comment = "Project -> " + project.name; sales_invoice.trans_date = DateTime.Now; sales_invoice_detail sales_invoice_detail = null; foreach (project_task _project_task in project_taskLIST) { sales_invoice_detail = new sales_invoice_detail(); sales_invoice_detail.State = EntityState.Added; sales_invoice_detail.id_sales_invoice = sales_invoice.id_sales_invoice; sales_invoice_detail.sales_invoice = sales_invoice; sales_invoice_detail.id_item = (int)_project_task.id_item; sales_invoice_detail.item_description = _project_task.item_description; if (project.is_Executable) { sales_invoice_detail.quantity = (decimal)_project_task.quantity_exe; } else { sales_invoice_detail.quantity = (decimal)_project_task.quantity_est; } if (_project_task.unit_price_vat != null) { sales_invoice_detail.UnitPrice_Vat = (decimal)_project_task.unit_price_vat; } sales_invoice_detail.id_project_task = _project_task.id_project_task; _project_task.IsSelected = false; sales_invoice.sales_invoice_detail.Add(sales_invoice_detail); } sales_invoice.State = EntityState.Added; sales_invoice.IsSelected = true; crm_opportunity crm_opportunity = sales_order.crm_opportunity; crm_opportunity.sales_invoice.Add(sales_invoice); SalesOrderDB.crm_opportunity.Attach(crm_opportunity); SalesOrderDB.sales_invoice.Add(sales_invoice); } } } SalesOrderDB.SaveChanges(); btnCancel_Click(null, null); } }
private void BuyTag_GetThat(sales_promotion Promo, Invoice Invoice, sales_invoice SalesInvoice) { if (Promo.types == sales_promotion.Type.BuyTag_GetThat) { decimal TotalQuantity = 0; List <Detail> DetailList = new List <Detail>(); List <DetailTag> DetailTagList = new List <DetailTag>(); using (db db = new db()) { DetailList = Invoice.Details.Where(x => x.Item.item_tag_detail.Any(y => y.id_tag == Promo.reference)).ToList(); if (DetailList.Count() > 0) { DetailTag DetailTag = new DetailTag(); DetailTag.Tag = Promo.reference; DetailTag.Quantity = DetailList.Sum(x => x.Quantity); DetailTagList.Add(DetailTag); } TotalQuantity = DetailList.Sum(x => x.Quantity); } if (DetailTagList.Count() > 0 && TotalQuantity >= Promo.quantity_step) { foreach (DetailTag _DetailTag in DetailTagList) { Promo _Promo = new Promo(); _Promo.Type = sales_promotion.Type.BuyTag_GetThat; _Promo.Shared = true; List <sales_invoice_detail> sid = SalesInvoice.sales_invoice_detail.Where(x => x.item.item_tag_detail.Any(y => y.id_tag == Promo.reference) && x.IsPromo).ToList(); //Prevent double clicking button and adding extra bonus to sale. find better way to implement. Short term code. foreach (sales_invoice_detail _Detail_ in sid) { SalesInvoice.sales_invoice_detail.Remove(_Detail_); } PromotionProduct window = new PromotionProduct() { Title = "Modal Dialog", ShowInTaskbar = false, // don't show the dialog on the taskbar Topmost = true, // ensure we're Always On Top ResizeMode = ResizeMode.NoResize, // remove excess caption bar buttons TagID = Promo.reference, TotalQuantity = Math.Floor(_DetailTag.Quantity / Promo.quantity_step), }; window.ShowDialog(); List <DetailProduct> DetailProduct = window.ProductList; if (DetailProduct != null) { foreach (DetailProduct _DetailProduct in DetailProduct) { sales_invoice_detail sales_invoice_detail = new sales_invoice_detail(); //Needed to calculate the discounts and unit prices further on. sales_invoice_detail.State = System.Data.Entity.EntityState.Added; using (db db = new db()) { item item = db.items.Where(x => x.id_item == _DetailProduct.ProductId).FirstOrDefault(); if (item != null) { sales_invoice_detail.id_vat_group = item.id_vat_group; sales_invoice_detail.id_item = item.id_item; sales_invoice_detail.item_description = item.name; } item_price item_price = item.item_price.Where(x => x.item_price_list.is_default == true).FirstOrDefault(); if (item_price != null) { sales_invoice_detail.unit_price = item_price.value; sales_invoice_detail.discount = item_price.value; } } sales_invoice_detail.IsPromo = true; sales_invoice_detail.quantity = _DetailProduct.Quantity; SalesInvoice.sales_invoice_detail.Add(sales_invoice_detail); } } } } } }