Example #1
0
        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);
        }
Example #2
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);
                        }
                    }
                }
            }
        }
Example #3
0
        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;
            }
        }
Example #4
0
        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);
        }
Example #5
0
        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);
            }
        }
Example #6
0
        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;
        }
Example #7
0
        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);
                            }
                        }
                    }
                }
            }
        }