Exemple #1
0
 private void Entidad_Bonificacion(int PKID, string Mecanica, int TipoMecanica, string CodigoObsequio, decimal CantidadMinima, int CantidadMaxima, int CantidadObsequio,
                                   int MaximoPorCliente, decimal Stock, bool Exclusion, int PkidExclusion, string CodigoVenta, string Proveedor, string Desde, string Hasta, bool Activo, int IDAsociado,
                                   DataGridView dgv)
 {
     using (var CTX = new LiderEntities())
     {
         var Rutina = new Libreria.Rutina();
         Rutina.Procedimiento("avila.pFB_GenerarID 'Bonificacion',''");
         var          IdBon = CTX.IDTablas.Where(w => w.Tabla == "Bonificacion").Select(s => s.ID).FirstOrDefault();;
         Bonificacion Bn    = new Bonificacion();
         Bn.PKID                     = IdBon;
         Bn.Mecanica                 = Mecanica;
         Bn.TipoMecanica             = TipoMecanica;
         Bn.cdProductoRegalo         = CodigoObsequio;
         Bn.CantidadMinima           = CantidadMinima;
         Bn.CantidadMaxima           = CantidadMaxima;
         Bn.CantidadRegalo           = CantidadObsequio;
         Bn.CantidadMaximaPorCliente = MaximoPorCliente;
         Bn.Stock                    = Stock;
         Bn.StockEntregado           = (decimal)0.00;
         Bn.TieneExclusion           = Exclusion;
         Bn.IDBonifcacionExcluida    = PkidExclusion;
         Bn.cdProductoVenta          = CodigoVenta;
         Bn.IDProveedor              = Proveedor;
         Bn.Desde                    = DateTime.Parse(Desde);
         Bn.Hasta                    = DateTime.Parse(Hasta);
         Bn.Activo                   = Activo;
         CTX.Bonificacions.Add(Bn);
         foreach (DataGridViewRow T in dgv.Rows)
         {
             Rutina.Procedimiento("avila.pFB_GenerarID 'ItemBonificacion',''");
             ItemBonificacion Ib = new ItemBonificacion();
             Ib.PKID                = CTX.IDTablas.Where(w => w.Tabla == "ItemBonificacion").Select(s => s.ID).FirstOrDefault();
             Ib.IDBonificacion      = PKID;
             Ib.cdProductoColeccion = Convert.ToString(T.Cells["Codigo"].Value);
             Ib.IDAsociado          = IDAsociado;
             CTX.ItemBonificacions.Add(Ib);
         }
         CTX.BatchSaveChanges();
         Modificar();
     }
 }
Exemple #2
0
        public void Evaluar_Bonificacion(DataGridView Grid, string Fecha)
        {
            var Ex           = false;
            var x            = 0;
            var y            = 0;
            var FechaEmision = DateTime.Parse(Fecha);
            var proceso      = new Libreria.Rutina();

            using (var CTX = new LiderEntities())
            {
                proceso.Procedimiento("sp_stock_sistema '" + DateTime.Now.Date.ToString("yyyyMMdd") + "',2");
                proceso.Procedimiento("sp_stock_sistema_web '" + DateTime.Now.Date.ToString("yyyyMMdd") + "',2");

                DataTable dt = new DataTable();
                dt.Columns.Add("id", typeof(System.Int32));
                dt.Columns.Add("Cantidad", typeof(System.Decimal));
                List <string> lista = new List <string>();

                var bonificacion = from bn in CTX.Bonificacions
                                   where bn.Activo == true && FechaEmision >= bn.Desde && FechaEmision < bn.Hasta
                                   select bn;
                foreach (var Prom in bonificacion)
                {
                    lista.Clear();
                    var Product   = CTX.PRODUCTOes.Where(w => w.Producto1 == Prom.cdProductoRegalo).FirstOrDefault();
                    var coleccion = from ibn in CTX.ItemBonificacions where ibn.IDBonificacion == Prom.PKID select ibn;
                    foreach (var items in coleccion)
                    {
                        lista.Add(items.cdProductoColeccion);
                    }
                    string Products  = string.Join(",", lista.ToArray());
                    var    MCantidad = (from pedido in Grid.Rows.Cast <DataGridViewRow>()
                                        where Products.Contains(pedido.Cells["Codigo"].Value.ToString())
                                        select Convert.ToDecimal(pedido.Cells["Cantidad"].Value)).Sum();
                    var MSoles = (from pedido in Grid.Rows.Cast <DataGridViewRow>()
                                  where Products.Contains(pedido.Cells["Codigo"].Value.ToString())
                                  select Convert.ToDecimal(pedido.Cells["Total"].Value)).Sum();
                    foreach (DataGridViewRow Fila in Grid.Rows)
                    {
                        if (Convert.ToInt32(Fila.Cells["IDBonificacion"].Value == string.Empty ? 0 : Fila.Cells["IDBonificacion"].Value) > 0)
                        {
                            if (Prom.IDBonifcacionExcluida == Convert.ToInt32(Fila.Cells["IDBonificacion"].Value))
                            {
                                Ex = true;
                            }
                        }
                    }
                    if (CTX.ItemBonificacions.Where(w => w.IDBonificacion == Prom.PKID).Select(s => s.IDAsociado).FirstOrDefault() == 4)
                    {
                        if (MCantidad != null && MCantidad > 0)
                        {
                            x = (int)(MCantidad / Prom.CantidadMinima) * Prom.CantidadRegalo;
                            switch (Prom.TipoMecanica)
                            {
                            case 1:
                                if (MCantidad >= Prom.CantidadMinima)
                                {
                                    if (!Prom.TieneExclusion)
                                    {
                                        Insertar(Prom.CantidadMaximaPorCliente, Product.StockDia, x, Grid, Prom.cdProductoRegalo, Product.Descripcion.Trim(), Product.UniMed.Trim(), Prom.PKID);
                                    }
                                    else
                                    {
                                        if (!Ex)
                                        {
                                            Insertar(Prom.CantidadMaximaPorCliente, Product.StockDia, x, Grid, Prom.cdProductoRegalo, Product.Descripcion.Trim(), Product.UniMed.Trim(), Prom.PKID);
                                        }
                                    }
                                }
                                break;

                            case 2:
                                if (MCantidad >= Prom.CantidadMinima && MCantidad < Prom.CantidadMaxima)
                                {
                                    if (!Prom.TieneExclusion)
                                    {
                                        Insertar(Prom.CantidadMaximaPorCliente, Product.StockDia, x, Grid, Prom.cdProductoRegalo, Product.Descripcion.Trim(), Product.UniMed.Trim(), Prom.PKID);
                                    }
                                    else
                                    {
                                        if (!Ex)
                                        {
                                            Insertar(Prom.CantidadMaximaPorCliente, Product.StockDia, x, Grid, Prom.cdProductoRegalo, Product.Descripcion.Trim(), Product.UniMed.Trim(), Prom.PKID);
                                        }
                                    }
                                }
                                break;
                            }
                        }
                        if (MSoles != null && MSoles > 0)
                        {
                            y = (int)(MSoles / Prom.CantidadMinima) * Prom.CantidadRegalo;
                            switch (Prom.TipoMecanica)
                            {
                            case 3:
                                if (MSoles >= Prom.CantidadMinima)
                                {
                                    if (!Prom.TieneExclusion)
                                    {
                                        Insertar(Prom.CantidadMaximaPorCliente, Product.StockDia, y, Grid, Prom.cdProductoRegalo, Product.Descripcion.Trim(), Product.UniMed.Trim(), Prom.PKID);
                                    }
                                    else
                                    {
                                        if (!Ex)
                                        {
                                            Insertar(Prom.CantidadMaximaPorCliente, Product.StockDia, y, Grid, Prom.cdProductoRegalo, Product.Descripcion.Trim(), Product.UniMed.Trim(), Prom.PKID);
                                        }
                                    }
                                }
                                break;

                            case 4:
                                if (MSoles >= Prom.CantidadMinima && MSoles < Prom.CantidadMaxima)
                                {
                                    if (!Prom.TieneExclusion)
                                    {
                                        Insertar(Prom.CantidadMaximaPorCliente, Product.StockDia, y, Grid, Prom.cdProductoRegalo, Product.Descripcion.Trim(), Product.UniMed.Trim(), Prom.PKID);
                                    }
                                    else
                                    {
                                        if (!Ex)
                                        {
                                            Insertar(Prom.CantidadMaximaPorCliente, Product.StockDia, y, Grid, Prom.cdProductoRegalo, Product.Descripcion.Trim(), Product.UniMed.Trim(), Prom.PKID);
                                        }
                                    }
                                }
                                break;
                            }
                        }
                    }
                }
            }
        }
Exemple #3
0
 private void DESCARGAR_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
 {
     if (gridView1.SelectedRowsCount > 0)
     {
         var Rutina = new Libreria.Rutina();
         if (Rutina.MensagePregunta("¿Continuar?") == DialogResult.Yes)
         {
             Elementos.frmMsg frmmensage = new Elementos.frmMsg();
             frmmensage.Scm03.SplashFormStartPosition       = SplashFormStartPosition.Default;
             frmmensage.dataGridView1.Columns[0].HeaderText = "Pedido";
             frmmensage.dataGridView1.Columns[1].HeaderText = "Resultado";
             frmmensage.dataGridView1.Columns[2].HeaderText = string.Empty;
             frmmensage.dataGridView1.Columns[3].HeaderText = string.Empty;
             frmmensage.Show();
             frmmensage.Scm03.ShowWaitForm();
             foreach (var pedido in gridView1.GetSelectedRows())
             {
                 entidad.pedido = gridView1.GetDataRow(pedido)["num Pedido"].ToString();
                 string tipopersona = Rutina.ConsultarCadena("TipoPersona", "pedido", "pedido = '" + entidad.pedido + "'");
                 entidad.tipodocumento = Rutina.ConsultarCadena("TipoDoc", "pedido", "pedido = '" + entidad.pedido + "'");
                 if (!Rutina.ExistenciaCampo("pedido", "pedido", "procesado = 1 and pedido = '" + entidad.pedido + "'"))
                 {
                     if (Rutina.ExistenciaCampo("pedido", "pedido", "statusweb is null and pedido = '" + entidad.pedido + "'"))
                     {
                         frmmensage.dataGridView1.Rows.Add(gridView1.GetDataRow(pedido)["num Pedido"].ToString(),
                                                           "Documento Saliente Número : " + entidad.tipodocumento + Rutina.Procedimiento("sp_genera_documento '" + entidad.pedido + "','" + tipopersona + "','" + entidad.tipodocumento + "'"),
                                                           string.Empty, string.Empty);
                         Rutina.actualizar("pedido", "StatusWeb = 1", "pedido = '" + entidad.pedido + "'");
                     }
                     else
                     {
                         frmmensage.dataGridView1.Rows.Add(gridView1.GetDataRow(pedido)["num Pedido"].ToString(), "pedido ya se encuentra descargado!",
                                                           string.Empty, string.Empty);
                     }
                 }
                 else
                 {
                     frmmensage.dataGridView1.Rows.Add(gridView1.GetDataRow(pedido)["num Pedido"].ToString(), "pedido se encuentra procesado y no puede ser eliminado!",
                                                       string.Empty, string.Empty);
                 }
             }
             frmmensage.Scm03.CloseWaitForm();
             Refrescar();
         }
     }
 }
Exemple #4
0
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            List <string> lista = new List <string>();

            foreach (var fila in gridView1.GetSelectedRows())
            {
                lista.Add("'" + gridView1.GetDataRow(fila)["Codigo"].ToString() + "'");
            }
            string codigos = string.Join(",", lista.ToArray());

            //
            entidad.fecha = Convert.ToDateTime(FechaProceso.EditValue).ToString("yyyyMMdd");
            if (FechaProceso.EditValue != null)
            {
                Modulos.Elementos.frmMsg frmmensage = new Modulos.Elementos.frmMsg();
                if (proceso.MensagePregunta("Desea Continua") == DialogResult.Yes)
                {
                    if (gridView1.SelectedRowsCount > 0)
                    {
                        var Formulario = new frmPrincipal();
                        Formulario.Scm01.SplashFormStartPosition = SplashFormStartPosition.Default;
                        frmmensage.Show();
                        Formulario.Scm01.ShowWaitForm();
                        //evento # 01
                        proceso.Procedimiento("sp_stock_sistema '" + DateTime.Now.Date.ToString("yyyyMMdd") + "', 2");
                        proceso.Procedimiento("sp_stock_sistema_web '" + DateTime.Now.Date.ToString("yyyyMMdd") + "', 2");
                        ejecutar.horasBonificacion();
                        ejecutar.deleteBonificacion(entidad.fecha);
                        //evento # 02
                        var bonificacion = proceso.ConsultarTabla_("Bonificacion", "(Activo = 1) AND ('" + entidad.fecha + "' >= Desde AND '" + entidad.fecha + "' <= Hasta)");
                        if (bonificacion.Rows.Count != 0)
                        {
                            foreach (DataRow drb in bonificacion.Rows)
                            {
                                entidad.existe                 = false;
                                entidad.idbonificacion         = Convert.ToInt32(drb["PKID"]);
                                entidad.codigoregalo           = drb["cdProductoRegalo"].ToString();
                                entidad.cantidadminima         = Convert.ToDecimal(drb["CantidadMinima"]);
                                entidad.cantidadmaxima         = Convert.ToInt32(drb["CantidadMaxima"]);
                                entidad.cantidadobsequio       = Convert.ToInt32(drb["CantidadRegalo"]);
                                entidad.cantidadmaximacliente  = Convert.ToInt32(drb["CantidadMaximaPorCliente"]);
                                entidad.cantidadstock          = Convert.ToInt32(drb["Stock"]);
                                entidad.cantidadstockentregado = Convert.ToInt32(drb["StockEntregado"]);
                                entidad.exclusion              = Convert.ToBoolean(drb["TieneExclusion"]);
                                entidad.codigoexclusion        = Convert.ToInt32(drb["IDBonifcacionExcluida"]);
                                entidad.tipomecanica           = Convert.ToInt32(drb["TipoMecanica"]);
                                entidad.idasociado             = proceso.ConsultarEntero("IDAsociado", "ItemBonificacion", "IDBonificacion = " + entidad.idbonificacion);
                                entidad.codigoasociado         = proceso.ConsultarCadena("Codigo", "TipoAsociado", "PKID = " + entidad.idasociado);
                                if (entidad.idasociado == 4)
                                {
                                    if (entidad.tipomecanica == 1)
                                    {
                                        entidad.table = proceso.EvaluarBonificacion(
                                            @"
                                                    (dbo.Vva_Pedido.FechaEmision = '" + entidad.fecha + @"') AND
                                                    (dbo.Producto." + entidad.codigoasociado + @" in (SELECT cdProductoColeccion
                                                                           FROM dbo.ItemBonificacion
                                                                           WHERE (IDBonificacion = " + entidad.idbonificacion + @"))) AND
                                                    ( (dbo.Vva_Pedido.IDVend IN (" + codigos + @"))) AND
                                                    (dbo.Vva_Pedido.Procesado = 0)  AND (dbo.Vva_Pedido.Bajado is null)
                                                    ",
                                            @"
                                                    (SUM (dbo.Vva_ItemPedido.Cantidad) >= " + entidad.cantidadminima + ")");
                                        if (entidad.table.Rows.Count == 0)
                                        {
                                            contador += 1;
                                        }
                                        entidad.suma = ((int)(from R in entidad.table.AsEnumerable() select Convert.ToDecimal(R["Cantidad"])).Sum() / entidad.cantidadminima) * entidad.cantidadobsequio;
                                        if (proceso.ExistenciaStock(entidad.codigoregalo, 0, entidad.suma))
                                        {
                                            foreach (DataRow F00 in entidad.table.Rows)
                                            {
                                                entidad.codigopedido        = F00["NrPedido"].ToString();
                                                entidad.cantidadvendida     = Convert.ToDecimal(F00["Cantidad"].ToString());
                                                entidad.cantidadtotalregalo = (int)(entidad.cantidadvendida / entidad.cantidadminima) * entidad.cantidadobsequio;
                                                if (!entidad.exclusion)
                                                {
                                                    if (entidad.cantidadmaximacliente > 0 && entidad.cantidadtotalregalo <= entidad.cantidadmaximacliente)
                                                    {
                                                        ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadtotalregalo);
                                                    }
                                                    else if (entidad.cantidadmaximacliente > 0 && entidad.cantidadtotalregalo > entidad.cantidadmaximacliente)
                                                    {
                                                        ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadmaximacliente);
                                                    }
                                                    else
                                                    {
                                                        ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadtotalregalo);
                                                    }
                                                }
                                                else
                                                {
                                                    foreach (DataRow F01 in proceso.ConsultarTabla_("DETPEDIDO", "pedido = '" + entidad.codigopedido + "'").Rows)
                                                    {
                                                        if (Convert.ToInt32(F01["IDBonificacion"] is DBNull ? 0 : F01["IDBonificacion"]) > 0)
                                                        {
                                                            if (entidad.codigoexclusion == Convert.ToInt32(F01["IDBonificacion"] is DBNull ? 0 : F01["IDBonificacion"]))
                                                            {
                                                                entidad.existe = true;
                                                            }
                                                        }
                                                    }
                                                    if (!entidad.existe)
                                                    {
                                                        if (entidad.cantidadmaximacliente > 0 && entidad.cantidadtotalregalo <= entidad.cantidadmaximacliente)
                                                        {
                                                            ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadtotalregalo);
                                                        }
                                                        else if (entidad.cantidadmaximacliente > 0 && entidad.cantidadtotalregalo > entidad.cantidadmaximacliente)
                                                        {
                                                            ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadmaximacliente);
                                                        }
                                                        else
                                                        {
                                                            ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadtotalregalo);
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                        else
                                        {
                                            if (entidad.suma != 0)
                                            {
                                                frmmensage.dataGridView1.Rows.Add(entidad.codigoregalo, proceso.ConsultarCadena("Descripcion", "producto", "producto = '" + entidad.codigoregalo + "'"),
                                                                                  entidad.suma, proceso.ConsultarCadena("StockAc", "Producto", "producto = '" + entidad.codigoregalo + "'"));
                                            }
                                        }
                                    }
                                    if (entidad.tipomecanica == 2)
                                    {
                                        entidad.table = proceso.EvaluarBonificacion(
                                            @"
                                                    (dbo.Vva_Pedido.FechaEmision = '" + entidad.fecha + @"') AND
                                                    (dbo.Producto." + entidad.codigoasociado + @" in (SELECT cdProductoColeccion
                                                                           FROM dbo.ItemBonificacion
                                                                           WHERE (IDBonificacion = " + entidad.idbonificacion + @"))) AND
                                                    ( (dbo.Vva_Pedido.IDVend IN (" + codigos + @"))) AND
                                                    (dbo.Vva_Pedido.Procesado = 0) AND (dbo.Vva_Pedido.Bajado is null)
                                                    ",
                                            @"(SUM (dbo.Vva_ItemPedido.Cantidad) >= " + entidad.cantidadminima + ") " +
                                            "and (SUM (dbo.Vva_ItemPedido.Cantidad) < " + entidad.cantidadmaxima + ")");
                                        if (entidad.table.Rows.Count == 0)
                                        {
                                            contador += 1;
                                        }
                                        entidad.suma = ((int)(from R in entidad.table.AsEnumerable() select Convert.ToDecimal(R["Cantidad"])).Sum() / entidad.cantidadminima) * entidad.cantidadobsequio;
                                        if (proceso.ExistenciaStock(entidad.codigoregalo, 0, entidad.suma))
                                        {
                                            foreach (DataRow F00 in entidad.table.Rows)
                                            {
                                                entidad.codigopedido        = F00["NrPedido"].ToString();
                                                entidad.cantidadvendida     = Convert.ToDecimal(F00["Cantidad"].ToString());
                                                entidad.cantidadtotalregalo = (int)(entidad.cantidadvendida / entidad.cantidadminima) * entidad.cantidadobsequio;
                                                if (!entidad.exclusion)
                                                {
                                                    if (entidad.cantidadmaximacliente > 0 && entidad.cantidadtotalregalo <= entidad.cantidadmaximacliente)
                                                    {
                                                        ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadtotalregalo);
                                                    }
                                                    else if (entidad.cantidadmaximacliente > 0 && entidad.cantidadtotalregalo > entidad.cantidadmaximacliente)
                                                    {
                                                        ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadmaximacliente);
                                                    }
                                                    else
                                                    {
                                                        ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadtotalregalo);
                                                    }
                                                }
                                                else
                                                {
                                                    foreach (DataRow F01 in proceso.ConsultarTabla_("DETPEDIDO", "pedido = '" + entidad.codigopedido + "'").Rows)
                                                    {
                                                        if (Convert.ToInt32(F01["IDBonificacion"] is DBNull ? 0 : F01["IDBonificacion"]) > 0)
                                                        {
                                                            if (entidad.codigoexclusion == Convert.ToInt32(F01["IDBonificacion"] is DBNull ? 0 : F01["IDBonificacion"]))
                                                            {
                                                                entidad.existe = true;
                                                            }
                                                        }
                                                    }
                                                    if (!entidad.existe)
                                                    {
                                                        if (entidad.cantidadmaximacliente > 0 && entidad.cantidadtotalregalo <= entidad.cantidadmaximacliente)
                                                        {
                                                            ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadtotalregalo);
                                                        }
                                                        else if (entidad.cantidadmaximacliente > 0 && entidad.cantidadtotalregalo > entidad.cantidadmaximacliente)
                                                        {
                                                            ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadmaximacliente);
                                                        }
                                                        else
                                                        {
                                                            ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadtotalregalo);
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                        else
                                        {
                                            if (entidad.suma != 0)
                                            {
                                                frmmensage.dataGridView1.Rows.Add(entidad.codigoregalo, proceso.ConsultarCadena("Descripcion", "producto", "producto = '" + entidad.codigoregalo + "'"),
                                                                                  entidad.suma, proceso.ConsultarCadena("StockAc", "Producto", "producto = '" + entidad.codigoregalo + "'"));
                                            }
                                        }
                                    }
                                    if (entidad.tipomecanica == 3)
                                    {
                                        proceso.consultar(@"
                                        SELECT
                                            Vva_Pedido.NrPedido, SUM (Vva_ItemPedido.Cantidad * Vva_ItemPedido.Precio) AS Cantidad
                                        FROM
                                            Vva_Pedido INNER JOIN Vva_ItemPedido ON Vva_Pedido.NrPedido = Vva_ItemPedido.NrPedido INNER JOIN PRODUCTO
                                            ON Vva_ItemPedido.IDProducto = PRODUCTO.Producto
                                        WHERE
                                            (Vva_Pedido.FechaEmision = '" + entidad.fecha + "') AND PRODUCTO." + entidad.codigoasociado + @" in (SELECT cdProductoColeccion
                                            FROM ItemBonificacion WHERE (IDBonificacion = " + entidad.idbonificacion + @")) AND ( (Vva_Pedido.IDVend IN (" + codigos + @"))) AND
                                            (Vva_Pedido.Procesado = 0)  AND (dbo.Vva_Pedido.Bajado is null)
                                        GROUP BY Vva_Pedido.NrPedido
                                        HAVING
                                        (SUM (Vva_ItemPedido.Cantidad * Vva_ItemPedido.Precio) >= " + entidad.cantidadminima + ")", "Soles");
                                        entidad.table = proceso.ds.Tables["Soles"];
                                        if (entidad.table.Rows.Count == 0)
                                        {
                                            contador += 1;
                                        }
                                        entidad.suma = ((int)(from R in entidad.table.AsEnumerable() select Convert.ToDecimal(R["Cantidad"])).Sum() / entidad.cantidadminima) * entidad.cantidadobsequio;
                                        if (proceso.ExistenciaStock(entidad.codigoregalo, 0, entidad.suma))
                                        {
                                            foreach (DataRow F00 in entidad.table.Rows)
                                            {
                                                entidad.codigopedido        = F00["NrPedido"].ToString();
                                                entidad.cantidadvendida     = Convert.ToDecimal(F00["Cantidad"].ToString());
                                                entidad.cantidadtotalregalo = (int)(entidad.cantidadvendida / entidad.cantidadminima) * entidad.cantidadobsequio;

                                                if (!entidad.exclusion)
                                                {
                                                    if (entidad.cantidadmaximacliente > 0 && entidad.cantidadtotalregalo <= entidad.cantidadmaximacliente)
                                                    {
                                                        ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadtotalregalo);
                                                    }
                                                    else if (entidad.cantidadmaximacliente > 0 && entidad.cantidadtotalregalo > entidad.cantidadmaximacliente)
                                                    {
                                                        ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadmaximacliente);
                                                    }
                                                    else
                                                    {
                                                        ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadtotalregalo);
                                                    }
                                                }
                                                else
                                                {
                                                    foreach (DataRow F01 in proceso.ConsultarTabla_("DETPEDIDO", "pedido = '" + entidad.codigopedido + "'").Rows)
                                                    {
                                                        if (Convert.ToInt32(F01["IDBonificacion"] is DBNull ? 0 : F01["IDBonificacion"]) > 0)
                                                        {
                                                            if (entidad.codigoexclusion == Convert.ToInt32(F01["IDBonificacion"] is DBNull ? 0 : F01["IDBonificacion"]))
                                                            {
                                                                entidad.existe = true;
                                                            }
                                                        }
                                                    }
                                                    if (!entidad.existe)
                                                    {
                                                        if (entidad.cantidadmaximacliente > 0 && entidad.cantidadtotalregalo <= entidad.cantidadmaximacliente)
                                                        {
                                                            ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadtotalregalo);
                                                        }
                                                        else if (entidad.cantidadmaximacliente > 0 && entidad.cantidadtotalregalo > entidad.cantidadmaximacliente)
                                                        {
                                                            ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadmaximacliente);
                                                        }
                                                        else
                                                        {
                                                            ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadtotalregalo);
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                        else
                                        {
                                            if (entidad.suma != 0)
                                            {
                                                frmmensage.dataGridView1.Rows.Add(entidad.codigoregalo, proceso.ConsultarCadena("Descripcion", "producto", "producto = '" + entidad.codigoregalo + "'"),
                                                                                  entidad.suma, proceso.ConsultarCadena("StockAc", "Producto", "producto = '" + entidad.codigoregalo + "'"));
                                            }
                                        }
                                    }
                                    if (entidad.tipomecanica == 4)
                                    {
                                        proceso.consultar(@"
                                         SELECT
                                            Vva_Pedido.NrPedido,
                                            SUM (Vva_ItemPedido.Cantidad * Vva_ItemPedido.Precio) AS Cantidad
                                        FROM
                                            Vva_Pedido INNER JOIN Vva_ItemPedido ON Vva_Pedido.NrPedido = Vva_ItemPedido.NrPedido INNER JOIN PRODUCTO
                                            ON Vva_ItemPedido.IDProducto = PRODUCTO.Producto
                                        WHERE
                                            (Vva_Pedido.FechaEmision = '" + entidad.fecha + "') AND PRODUCTO." + entidad.codigoasociado + @" in (SELECT cdProductoColeccion
                                            FROM ItemBonificacion WHERE (IDBonificacion = " + entidad.idbonificacion + @")) AND ( (Vva_Pedido.IDVend IN (" + codigos + @"))) AND
                                            (Vva_Pedido.Procesado = 0)  AND (dbo.Vva_Pedido.Bajado is null)
                                        GROUP BY Vva_Pedido.NrPedido
                                        HAVING
                                        (SUM (Vva_ItemPedido.Cantidad * Vva_ItemPedido.Precio) >= " + entidad.cantidadminima + ") and (SUM (Vva_ItemPedido.Cantidad * Vva_ItemPedido.Precio) < " + entidad.cantidadmaxima + ")", "Soles");
                                        entidad.table = proceso.ds.Tables["Soles"];
                                        if (entidad.table.Rows.Count == 0)
                                        {
                                            contador += 1;
                                        }
                                        entidad.suma = ((int)(from R in entidad.table.AsEnumerable() select Convert.ToDecimal(R["Cantidad"])).Sum() / entidad.cantidadminima) * entidad.cantidadobsequio;
                                        if (proceso.ExistenciaStock(entidad.codigoregalo, 0, entidad.suma))
                                        {
                                            foreach (DataRow F00 in entidad.table.Rows)
                                            {
                                                entidad.codigopedido        = F00["NrPedido"].ToString();
                                                entidad.cantidadvendida     = Convert.ToDecimal(F00["Cantidad"].ToString());
                                                entidad.cantidadtotalregalo = (int)(entidad.cantidadvendida / entidad.cantidadminima) * entidad.cantidadobsequio;
                                                if (!entidad.exclusion)
                                                {
                                                    if (entidad.cantidadmaximacliente > 0 && entidad.cantidadtotalregalo <= entidad.cantidadmaximacliente)
                                                    {
                                                        ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadtotalregalo);
                                                    }
                                                    else if (entidad.cantidadmaximacliente > 0 && entidad.cantidadtotalregalo > entidad.cantidadmaximacliente)
                                                    {
                                                        ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadmaximacliente);
                                                    }
                                                    else
                                                    {
                                                        ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadtotalregalo);
                                                    }
                                                }
                                                else
                                                {
                                                    foreach (DataRow F01 in proceso.ConsultarTabla_("DETPEDIDO", "pedido = '" + entidad.codigopedido + "'").Rows)
                                                    {
                                                        if (Convert.ToInt32(F01["IDBonificacion"] is DBNull ? 0 : F01["IDBonificacion"]) > 0)
                                                        {
                                                            if (entidad.codigoexclusion == Convert.ToInt32(F01["IDBonificacion"] is DBNull ? 0 : F01["IDBonificacion"]))
                                                            {
                                                                entidad.existe = true;
                                                            }
                                                        }
                                                    }
                                                    if (!entidad.existe)
                                                    {
                                                        if (entidad.cantidadmaximacliente > 0 && entidad.cantidadtotalregalo <= entidad.cantidadmaximacliente)
                                                        {
                                                            ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadtotalregalo);
                                                        }
                                                        else if (entidad.cantidadmaximacliente > 0 && entidad.cantidadtotalregalo > entidad.cantidadmaximacliente)
                                                        {
                                                            ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadmaximacliente);
                                                        }
                                                        else
                                                        {
                                                            ejecutar.insertObsequio(entidad.idbonificacion, entidad.codigopedido, entidad.codigoregalo, entidad.cantidadtotalregalo);
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                        else
                                        {
                                            if (entidad.suma != 0)
                                            {
                                                frmmensage.dataGridView1.Rows.Add(entidad.codigoregalo, proceso.ConsultarCadena("Descripcion", "producto", "producto = '" + entidad.codigoregalo + "'"),
                                                                                  entidad.suma, proceso.ConsultarCadena("StockAc", "Producto", "producto = '" + entidad.codigoregalo + "'"));
                                            }
                                        }
                                    }
                                }
                            }
                            Formulario.Scm01.CloseWaitForm();
                            if (frmmensage.dataGridView1.Rows.Count == 0)
                            {
                                if (bonificacion.Rows.Count == contador)
                                {
                                    frmmensage.dataGridView1.Rows.Add(string.Empty, "NO SE HA INGRESADO NINGUNA BONIFICACION", string.Empty, string.Empty);
                                }
                                else
                                {
                                    frmmensage.dataGridView1.Rows.Add(string.Empty, "!! PROMOCIONES INSERTADAS CON EXITO !!", string.Empty, string.Empty);
                                }
                                this.Close();
                            }
                        }
                        else
                        {
                            Formulario.Scm01.CloseWaitForm();
                            frmmensage.dataGridView1.Rows.Add(string.Empty, " !! NO EXISTEN REGLAS DESIGNADAS PARA ESTE DIA !!  ", string.Empty, string.Empty);
                            this.Close();
                        }
                    }
                    else
                    {
                        MessageBox.Show("No existen vendedores seleccionados");
                    }
                    proceso.Procedimiento("sp_stock_sistema '" + DateTime.Now.Date.ToString("yyyyMMdd") + "', 2");
                    proceso.Procedimiento("sp_stock_sistema_web '" + DateTime.Now.Date.ToString("yyyyMMdd") + "', 2");
                }
                //ejecutar.Descargar_Pedidos_Web(entidad.fecha);
            }
            else
            {
                MessageBox.Show("No existe Fecha para procesar promociones");
            }
        }