public decimal get_Price(contact contact, int id_currencyfx, item item, entity.App.Modules Module) { if (item != null && contact != null) { //Step 1. Get Price List. int id_priceList = 0; if (contact.id_price_list != null) { id_priceList = (int)contact.id_price_list; //Get Price List from Contact. } else { id_priceList = get_Default(item.id_company).id_price_list; //Get Price List from Default, because Contact has no values. } //Step 1 1/2. Check if Quantity gets us a better Price List. //Step 2. Get Price in Currency. int id_currency = 0; using (db db = new db()) { if (db.app_currencyfx.Where(x => x.id_currencyfx == id_currencyfx).FirstOrDefault() != null) { id_currency = db.app_currencyfx.Where(x => x.id_currencyfx == id_currencyfx).FirstOrDefault().id_currency; } } item_price item_price = item.item_price.Where(x => x.id_currency == id_currency && x.id_price_list == id_priceList).FirstOrDefault(); if (item_price != null) { return(item_price.valuewithVAT); // return Currency.convert_Value(item_price_value, id_currencyfx, entity.App.Modules.Sales); } else { decimal item_price_value = 0; //decimal currencyfx = Currency.get_specificRate(id_currencyfx, application); if (item.item_price.Where(x => x.id_price_list == id_priceList) != null && item.item_price.Where(x => x.id_price_list == id_priceList).Count() > 0) { item_price = item.item_price.Where(y => y.id_price_list == id_priceList).FirstOrDefault(); item_price_value = item_price.valuewithVAT; using (db db = new db()) { if (db.app_currency.Where(x => x.id_currency == item_price.id_currency).FirstOrDefault() != null) { if (db.app_currency.Where(x => x.id_currency == item_price.id_currency).FirstOrDefault().app_currencyfx.Where(x => x.is_active).FirstOrDefault() != null) { return(Currency.convert_Values(item_price_value, db.app_currency.Where(x => x.id_currency == item_price.id_currency).FirstOrDefault().app_currencyfx.Where(x => x.is_active).FirstOrDefault().id_currencyfx, id_currencyfx, Module)); } } } } //return Currency.convert_Value(item_price_value, id_currencyfx, Module); } } return(0); }
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); } } } } }
private void item_priceDataGrid_InitializingNewItem(object sender, InitializingNewItemEventArgs e) { item item = itemDataGrid.SelectedItem as item; item_price item_price = e.NewItem as item_price; if (item != null) { item_price.id_item = item.id_item; item_price.item = item; } }
public item_price get_Default(int id_company) { item_price item_price = new item_price(); using (db db = new db()) { if (db.item_price.Where(x => x.item_price_list.is_active == true && x.item_price_list.id_company == id_company) != null) { item_price = db.item_price.Where(x => x.item_price_list.is_active == true && x.item_price_list.id_company == id_company).FirstOrDefault(); } else { item_price = db.item_price.Where(x => x.item_price_list.id_company == id_company).FirstOrDefault(); } } return(item_price); }
private void EditPricelist_PreviewMouseUp(object sender, MouseButtonEventArgs e) { item_price item_price = item_priceDataGrid.SelectedItem as item_price; item_price_list item_price_list = item_price.item_price_list; if (item_price_list != null) { crud_modal.Visibility = Visibility.Visible; cntrl.Curd.price_list _price_list = new cntrl.Curd.price_list(); _price_list.item_price_listViewSource = item_price_listViewSource; _price_list.MainViewSource = itemViewSource; _price_list.curMainObject = itemViewSource.View.CurrentItem; // _price_list._entity = dbContext; _price_list.price_listobject = item_price_list; _price_list.operationMode = cntrl.Class.clsCommon.Mode.Edit; _price_list.isExternalCall = true; crud_modal.Children.Add(_price_list); } }
public void product() { string sql = " SELECT dbo.FAMILIA.DESFAMILIA, dbo.LINEA.DESLINEA, dbo.RUBRO.DESRUBRO, dbo.IVA.DESIVA, dbo.CODIGOS.DESCODIGO1, dbo.CODIGOS.CODIGO, dbo.CODIGOS.PESABLE, dbo.CODIGOS.VENCIMIENTO, dbo.CODIGOS.BALANZA, dbo.PRODUCTOS.DESPRODUCTO, dbo.PRODUCTOS.STOCKMINIMO, dbo.PRODUCTOS.STOCKMAXIMO, " + " dbo.PRODUCTOS.SERVICIO, dbo.PRODUCTOS.ESTADO, dbo.PRODUCTOS.ESPECIFICACIONES, dbo.PRODUCTOS.PRODUCTO, dbo.UNIDADMEDIDA.DESMEDIDA, dbo.CODIGOS.CODCODIGO" + " FROM dbo.CODIGOS LEFT OUTER JOIN" + " dbo.PRODUCTOS ON dbo.CODIGOS.CODPRODUCTO = dbo.PRODUCTOS.CODPRODUCTO LEFT OUTER JOIN" + " dbo.UNIDADMEDIDA ON dbo.PRODUCTOS.CODMEDIDA = dbo.UNIDADMEDIDA.CODMEDIDA LEFT OUTER JOIN" + " dbo.RUBRO ON dbo.PRODUCTOS.CODRUBRO = dbo.RUBRO.CODRUBRO LEFT OUTER JOIN" + " dbo.FAMILIA ON dbo.PRODUCTOS.CODFAMILIA = dbo.FAMILIA.CODFAMILIA LEFT OUTER JOIN" + " dbo.LINEA ON dbo.PRODUCTOS.CODLINEA = dbo.LINEA.CODLINEA LEFT OUTER JOIN" + " dbo.IVA ON dbo.PRODUCTOS.CODIVA = dbo.IVA.CODIVA"; SqlConnection conn = new SqlConnection(_connString); //Counts Total number of Rows we have to process SqlCommand cmd = new SqlCommand(); conn.Open(); cmd.Connection = conn; cmd.CommandText = "SELECT COUNT(*) FROM CODIGOS"; cmd.CommandType = CommandType.Text; int count = (int)cmd.ExecuteScalar(); //cmd.Dispose(); conn.Close(); int value = 0; Dispatcher.BeginInvoke((Action)(() => progItem.Maximum = count)); Dispatcher.BeginInvoke((Action)(() => progItem.Value += value)); Dispatcher.BeginInvoke((Action)(() => itemMaximum.Text = count.ToString())); Dispatcher.BeginInvoke((Action)(() => itemValue.Text = value.ToString())); string sql_price = " SELECT dbo.TIPOCLIENTE.DESTIPOCLIENTE, dbo.PRECIO.CANTIDAD, dbo.PRECIO.PRECIOVENTA, dbo.MONEDA.DESMONEDA, dbo.PRODUCTOS.DESPRODUCTO" + " FROM dbo.PRECIO LEFT OUTER JOIN" + " dbo.MONEDA ON dbo.PRECIO.CODMONEDA = dbo.MONEDA.CODMONEDA LEFT OUTER JOIN" + " dbo.PRODUCTOS ON dbo.PRECIO.CODPRODUCTO = dbo.PRODUCTOS.CODPRODUCTO LEFT OUTER JOIN" + " dbo.TIPOCLIENTE ON dbo.PRECIO.CODTIPOCLIENTE = dbo.TIPOCLIENTE.CODTIPOCLIENTE"; DataTable dt_Price = exeDT(sql_price); conn.Open(); cmd.Connection = conn; cmd.CommandText = sql; cmd.CommandType = CommandType.Text; DataTable dt_product = exeDT(sql); foreach (DataRow reader in dt_product.Rows) { using (db db = new db()) { db.Configuration.AutoDetectChangesEnabled = false; item item = new item(); item.id_company = id_company; if (!(reader[9] is DBNull)) { item.name = reader[9].ToString(); } else { continue; } item.code = (reader[5] is DBNull) ? string.Empty : reader[5].ToString(); item.variation = (reader[9] is DBNull) ? string.Empty : reader[9].ToString(); item.is_active = (reader[13] is DBNull) ? false : true; item.description = (reader[14] is DBNull) ? string.Empty : reader[14].ToString(); string name = (reader[16] is DBNull) ? string.Empty : reader[16].ToString(); if (db.app_measurement.Where(x => x.name == name && x.id_company == id_company).FirstOrDefault() != null) { item.id_measurement = db.app_measurement.Where(x => x.name == name && x.id_company == id_company).FirstOrDefault().id_measurement; } //string FAMILIA; if (!(reader[0] is DBNull)) { string tagname = reader[0].ToString(); item_tag item_tagFam = db.item_tag.Where(x => x.name == tagname && x.id_company == id_company).FirstOrDefault(); item_tag_detail tag_detailFam = new item_tag_detail(); tag_detailFam.id_tag = item_tagFam.id_tag; item.item_tag_detail.Add(tag_detailFam); } //string LINEA; if (!(reader[1] is DBNull)) { string tagLinname = reader[1].ToString(); item_tag item_tagLin = db.item_tag.Where(x => x.name == tagLinname && x.id_company == id_company).FirstOrDefault(); item_tag_detail tag_detailLin = new item_tag_detail(); tag_detailLin.id_tag = item_tagLin.id_tag; item.item_tag_detail.Add(tag_detailLin); } //string RUBRO; if (!(reader[2] is DBNull)) { string tagrubro = reader[2].ToString(); item_tag item_tagRub = db.item_tag.Where(x => x.name == tagrubro && x.id_company == id_company).FirstOrDefault(); item_tag_detail tag_detailRub = new item_tag_detail(); tag_detailRub.id_tag = item_tagRub.id_tag; item.item_tag_detail.Add(tag_detailRub); } if (!(reader[15] is DBNull)) { if (Convert.ToInt32(reader[15]) == 1) { //Product item.id_item_type = item.item_type.Product; item_product product = new item_product(); product.id_company = id_company; product.can_expire = (reader[7] is DBNull || Convert.ToInt32(reader[7]) == 0) ? false : true; product.is_weigted = (reader[6] is DBNull || Convert.ToInt32(reader[6]) == 0) ? false : true; product.stock_max = (reader[11] is DBNull) ? 0M : (decimal)reader[11]; product.stock_min = (reader[10] is DBNull) ? 0M : (decimal)reader[10]; item.item_product.Add(product); } else { item.id_item_type = item.item_type.Task; //Generic Service //item_service service } } else { item.id_item_type = item.item_type.Task; //Generic Service //item_service service } decimal _vat_coeficient = 0; if (!(reader[3] is DBNull)) { string vatname = reader[3].ToString(); app_vat_group app_vat_group = db.app_vat_group.Where(x => x.name == vatname && x.id_company == id_company).FirstOrDefault(); item.id_vat_group = app_vat_group.id_vat_group; } decimal coefficient = 0; List <app_vat_group_details> app_vat_group_details = db.app_vat_group_details.Where(x => x.id_vat_group == item.id_vat_group).ToList(); foreach (app_vat_group_details app_vat_group in app_vat_group_details) { coefficient = coefficient + app_vat_group.app_vat.coefficient; } string _DESPRODUCTO = reader["DESPRODUCTO"].ToString(); _DESPRODUCTO = _DESPRODUCTO.Replace("'", ""); try { foreach (DataRow price_row in dt_Price.Select("DESPRODUCTO = '" + _DESPRODUCTO + "'")) { string _desTipoCliente = (price_row.IsNull("DESTIPOCLIENTE")) ? string.Empty : price_row["DESTIPOCLIENTE"].ToString(); string _desMoneda = (price_row.IsNull("DESMONEDA")) ? string.Empty : price_row["DESMONEDA"].ToString(); if (_desTipoCliente != string.Empty && _desMoneda != string.Empty) { item_price_list item_price_list = db.item_price_list.Where(x => x.name == _desTipoCliente && x.id_company == id_company).FirstOrDefault(); app_currency app_currency = db.app_currency.Where(x => x.name == _desMoneda && x.id_company == id_company).FirstOrDefault(); if (item_price_list != null && app_currency != null && _vat_coeficient != -1) { item_price item_price = new item_price(); item_price.item = item; if (price_row["PRECIOVENTA"] is DBNull) { item_price.value = 0; } else { if (coefficient != -1) { item_price.value = ((decimal)price_row["PRECIOVENTA"] / (1 + coefficient)); } } item_price.min_quantity = (price_row.IsNull("CANTIDAD")) ? 0 : Convert.ToDecimal(price_row["CANTIDAD"]); item_price.id_currency = app_currency.id_currency; item_price.id_price_list = item_price_list.id_price_list; item.item_price.Add(item_price); } } } } catch (Exception ex) { throw ex; } try { if (item.Error == null) { db.items.Add(item); db.SaveChanges(); value += 1; Dispatcher.BeginInvoke((Action)(() => progItem.Value = value)); Dispatcher.BeginInvoke((Action)(() => itemValue.Text = value.ToString())); } } catch { } } } //cmd.Dispose(); conn.Close(); _product_Current = _product_Max; }
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); } } } } } }