public void GrabarPedido()
        {
            PedidoParametrosViewModel Pedido = new PedidoParametrosViewModel();
            {
                Pedido.BODEGA = "B-51";
                Pedido.CLIENTE = "0000001";
                Pedido.CONDICION_PAGO = 0;
                Pedido.NOMBRE_CUENTA = "PRUEBA";
                Pedido.OBSERVACIONES = "...";
                Pedido.ORDEN_COMPRA = "...";
                Pedido.TARJETA_CREDITO = "...";
                Pedido.PEDIDO = "...";
                Pedido.USUARIO_LOGIN = "******"; /*USUARIO DE LA BASE DE DATOS DE CONEXION*/
                Pedido.CODIGO_CONSECUTIVO = "PBA"; /*ESTE ES EL CONSECUTIVO DEL SISTEMA, SE DEBE SELECCIONAR DE ESTE METODO BuscarConsecutivo(USUARIO)*/
            };

            List<PedidoLineaParametrosViewModel> ListaPedidoLineas = new List<PedidoLineaParametrosViewModel>();
            int n = 1;
            while (n < 6)
            {

                PedidoLineaParametrosViewModel model1 = new PedidoLineaParametrosViewModel();
                {

                    model1.ARTICULO = "165/60R14 FALKE";
                    model1.CREADOR_POR = "jperez";
                    model1.PRECIO_UNITARIO = n * 10;
                    model1.CANTIDAD = n;
                    model1.DESCUENTO = 0;
                    model1.Linea = n;
                }

                ListaPedidoLineas.Add(model1);

                n++;
            }

            exac.GrabarPedido("jperez", "japerez", Pedido, ListaPedidoLineas);
        }
 public string GrabarPedido(string usuario, string  contraseña, PedidoParametrosViewModel Pedidos, List<PedidoLineaParametrosViewModel> ListaPedidoLineas)
 {
     var exactus = new ExactusData(usuario, contraseña, Schema);
     return exactus.GrabarPedido(Pedidos, ListaPedidoLineas);
 }
 public void EliminarPedidoCompleto(string usuario, string contraseña,  PedidoParametrosViewModel PedidoParametros)
 {
     var exactus = new ExactusData(usuario, contraseña, Schema);
     exactus.EliminarPedidoCompleto(PedidoParametros);
 }
 public void EliminarPedidoCompleto()
 {
     PedidoParametrosViewModel pedido = new PedidoParametrosViewModel();
     pedido.PEDIDO = "PBA-10000007";
     exac.EliminarPedidoCompleto("jperez", "japerez",  pedido);
 }
        public string GrabarPedido(PedidoParametrosViewModel PedidoParametros, List<PedidoLineaParametrosViewModel> PedidoLineaParametros)
        {
            string sqlcomando = "";
            string Nropedido = "";

            sqlcomando = sqlcomando + $" BEGIN TRY BEGIN TRANSACTION ";
            sqlcomando = sqlcomando + $" DECLARE @CLIENTE VARCHAR(100); DECLARE @BODEGA  VARCHAR(100); DECLARE @ORDEN_COMPRA VARCHAR(100); DECLARE @OBSERVACIONES VARCHAR(300); ";
            sqlcomando = sqlcomando + $" DECLARE @USUARIO_LOGIN VARCHAR(100); DECLARE @TARJETA_CREDITO VARCHAR(100); DECLARE @NOMBRE_CUENTA VARCHAR(100); ";
            sqlcomando = sqlcomando + $" DECLARE @CONDICION_PAGO INTEGER; DECLARE @PEDIDO VARCHAR(100); ";
            sqlcomando = sqlcomando + $" SET @BODEGA = '{PedidoParametros.BODEGA}';";
            sqlcomando = sqlcomando + $" SET @ORDEN_COMPRA = '{PedidoParametros.ORDEN_COMPRA}';  ";
            sqlcomando = sqlcomando + $" SET @OBSERVACIONES = '{PedidoParametros.OBSERVACIONES}';  ";
            sqlcomando = sqlcomando + $" SET @USUARIO_LOGIN = '******';  ";
            sqlcomando = sqlcomando + $" SET @TARJETA_CREDITO = '{PedidoParametros.TARJETA_CREDITO}'; ";
            sqlcomando = sqlcomando + $" SET @NOMBRE_CUENTA = '{PedidoParametros.NOMBRE_CUENTA}'; ";
            sqlcomando = sqlcomando + $" SET @CONDICION_PAGO = '{PedidoParametros.CONDICION_PAGO}';  ";
            sqlcomando = sqlcomando + $" SET @CLIENTE = '{PedidoParametros.CLIENTE}';  ";
            sqlcomando = sqlcomando + $" DECLARE @NUM_CONS VARCHAR(10) = '{PedidoParametros.CODIGO_CONSECUTIVO}'; DECLARE @CONSECUTIVO VARCHAR(50); ";
            /*sqlcomando = sqlcomando + $" SET @PEDIDO = '{PedidoParametros.PEDIDO}' ";*/
            /*sqlcomando = sqlcomando + $" SET @PEDIDO = '{Nropedido}'; ";*/
            sqlcomando = sqlcomando + $" SELECT @CONSECUTIVO = CONVERT(INT,COALESCE(CONVERT(VARCHAR(50),CONVERT(INTEGER,SUBSTRING(MAX(PEDIDO),5,LEN(MAX(PEDIDO))))),'00000000')) + 1 FROM {this.schema}.PEDIDO WHERE PEDIDO LIKE '%'+@NUM_CONS+'%' ";
            sqlcomando = sqlcomando + $" SELECT @PEDIDO = @NUM_CONS +'-'+@CONSECUTIVO ";

            sqlcomando = sqlcomando + $" DECLARE @FACTURADOR VARCHAR(100); DECLARE @VERSION_PRECIO VARCHAR(100); DECLARE @COBRADOR VARCHAR(100); DECLARE @RUTA VARCHAR(100); ";
            sqlcomando = sqlcomando + $" DECLARE @ZONA VARCHAR(100); DECLARE @PAIS VARCHAR(100); DECLARE @ALIAS_CLIENTE VARCHAR(100); DECLARE @VENDEDOR VARCHAR(100); ";
            sqlcomando = sqlcomando + $" DECLARE @SI_NO INTEGER; DECLARE @NIVEL_PRECIOS VARCHAR(100); ";
            sqlcomando = sqlcomando + $" SELECT @SI_NO = COUNT(*) FROM  {this.schema}.PEDIDO WHERE PEDIDO = @PEDIDO ";
            sqlcomando = sqlcomando + $" IF @SI_NO <= 0  ";
            sqlcomando = sqlcomando + $" SELECT @ALIAS_CLIENTE = ALIAS,@NIVEL_PRECIOS= NIVEL_PRECIO, @COBRADOR = COBRADOR , @RUTA = RUTA, @ZONA = ZONA, @VENDEDOR = VENDEDOR, @PAIS = PAIS  ";
            sqlcomando = sqlcomando + $" FROM {this.schema}.CLIENTE WHERE CLIENTE = @CLIENTE ";
            sqlcomando = sqlcomando + $" IF @VENDEDOR IS NULL SET @VENDEDOR = 'ND' ";
            sqlcomando = sqlcomando + $" SELECT @FACTURADOR = COD_FACTURADOR FROM USUARIO_FACTURADOR_WEB WHERE USUARIO = @USUARIO_LOGIN ";
            sqlcomando = sqlcomando + $" IF @FACTURADOR = NULL OR @FACTURADOR = '' SET @FACTURADOR = @VENDEDOR ";
            sqlcomando = sqlcomando + $" SELECT @VERSION_PRECIO = MAX(VERSION) FROM {this.schema}.VERSION_NIVEL WHERE NIVEL_PRECIO = @NIVEL_PRECIOS ";
            sqlcomando = sqlcomando + $" INSERT INTO {this.schema}.PEDIDO (PEDIDO,ESTADO,FECHA_PEDIDO,FECHA_PROMETIDA,FECHA_PROX_EMBARQU,FECHA_ULT_EMBARQUE, FECHA_ULT_CANCELAC, ORDEN_COMPRA,FECHA_ORDEN,TARJETA_CREDITO, EMBARCAR_A, DIREC_EMBARQUE,RUBRO1  ,RUBRO2 ,RUBRO3,RUBRO4,RUBRO5,OBSERVACIONES ,COMENTARIO_CXC,TOTAL_MERCADERIA,MONTO_ANTICIPO,MONTO_FLETE,MONTO_SEGURO,MONTO_DOCUMENTACIO,TIPO_DESCUENTO1,TIPO_DESCUENTO2,MONTO_DESCUENTO1,MONTO_DESCUENTO2,PORC_DESCUENTO1,PORC_DESCUENTO2,TOTAL_IMPUESTO1,TOTAL_IMPUESTO2,TOTAL_A_FACTURAR,PORC_COMI_VENDEDOR,PORC_COMI_COBRADOR,TOTAL_CANCELADO,TOTAL_UNIDADES,IMPRESO, FECHA_HORA,DESCUENTO_VOLUMEN,TIPO_PEDIDO,MONEDA_PEDIDO,VERSION_NP     ,AUTORIZADO,DOC_A_GENERAR,CLASE_PEDIDO,MONEDA,NIVEL_PRECIO,COBRADOR ,RUTA ,USUARIO       ,CONDICION_PAGO ,BODEGA ,ZONA, VENDEDOR ,CLIENTE,CLIENTE_DIRECCION,CLIENTE_CORPORAC,CLIENTE_ORIGEN,PAIS ,SUBTIPO_DOC_CXC,TIPO_DOC_CXC,BACKORDER,CONTRATO,PORC_INTCTE,DESCUENTO_CASCADA,NoteExistsFlag,RecordDate,CreatedBy ,CreateDate,DIRECCION_FACTURA,TIPO_CAMBIO,FIJAR_TIPO_CAMBIO,ORIGEN_PEDIDO, NOMBRE_CLIENTE) ";
            sqlcomando = sqlcomando + $" VALUES                    (@PEDIDO,'N',   CONVERT(varchar(10),GETDATE(),120),   CONVERT(varchar(10),GETDATE(),120),      CONVERT(varchar(10),GETDATE(),120),         '1980-01-01 00:00:00.000','1980-01-01 00:00:00.000',@ORDEN_COMPRA,CONVERT(varchar(10),GETDATE(),120), @TARJETA_CREDITO, (CASE WHEN @NOMBRE_CUENTA IS NULL OR @NOMBRE_CUENTA = '' THEN @ALIAS_CLIENTE ELSE @NOMBRE_CUENTA END) ,'ND'          ,@NOMBRE_CUENTA,@FACTURADOR,NULL  ,NULL  ,NULL  ,@OBSERVACIONES,NULL          ,0               ,0             ,0          ,0           ,0                 ,'P'            ,'P'            ,0               ,0               , 0             ,0              ,0              , 0             ,0               , 0                , 0                 ,0             ,0             ,'N'    , CONVERT(varchar(10),GETDATE(),120) ,0                , 'N'       ,'L'          ,@VERSION_PRECIO,'N'       ,'F'          ,'N'         ,'L'   , @NIVEL_PRECIOS  ,@COBRADOR,@RUTA,@USUARIO_LOGIN,@CONDICION_PAGO,@BODEGA,@ZONA,@VENDEDOR,@CLIENTE,@CLIENTE        ,@CLIENTE        ,@CLIENTE      ,@PAIS,0              ,'FAC'       ,'N'      ,NULL    ,0          ,'N'              ,0             ,CONVERT(varchar(10),GETDATE(),120)  ,@USUARIO_LOGIN,CONVERT(varchar(10),GETDATE(),120) ,'ND'             ,NULL       ,'N'              ,'F'   , (CASE WHEN @NOMBRE_CUENTA IS NULL OR @NOMBRE_CUENTA = '' THEN @ALIAS_CLIENTE ELSE @NOMBRE_CUENTA END)    ) ";
            sqlcomando = sqlcomando + $" DECLARE @ARTICULO VARCHAR(100); DECLARE @CREADOR_POR VARCHAR(100); DECLARE @PRECIO_UNITARIO DECIMAL(14,2); DECLARE @CANTIDAD DECIMAL(14,2); DECLARE @DESCUENTO DECIMAL(14,2); ";
            sqlcomando = sqlcomando + $" DECLARE @LINEA_USUARIO   INTEGER; DECLARE @PEDIDO_LINEA    INTEGER; DECLARE @EXENTO_IMPUESTO VARCHAR(10); DECLARE @ITBM DECIMAL(14,2); ";
            foreach (var item in PedidoLineaParametros)
            {
                sqlcomando = sqlcomando + $" set @ARTICULO ='{item.ARTICULO}'; ";
                sqlcomando = sqlcomando + $" set @CREADOR_POR ='{item.CREADOR_POR}'; ";
                sqlcomando = sqlcomando + $" set @PRECIO_UNITARIO = {item.PRECIO_UNITARIO}; ";
                sqlcomando = sqlcomando + $" set @CANTIDAD = {item.CANTIDAD}; ";
                sqlcomando = sqlcomando + $" set @DESCUENTO = {item.DESCUENTO}; ";
                sqlcomando = sqlcomando + $" Select @ITBM = CONVERT(DECIMAL(14,2),IMPUESTO1)/100 + CONVERT(DECIMAL(14,2),IMPUESTO2)/100 From {this.schema}.IMPUESTO WHERE IMPUESTO = (SELECT IMPUESTO FROM {this.schema}.ARTICULO WHERE ARTICULO = @ARTICULO) ; ";
                sqlcomando = sqlcomando + $" SELECT @EXENTO_IMPUESTO = EXENTO_IMPUESTOS FROM {this.schema}.CLIENTE WHERE CLIENTE = (SELECT CLIENTE FROM {this.schema}.PEDIDO WHERE PEDIDO = @PEDIDO) ";
                sqlcomando = sqlcomando + $" IF  (SELECT MAX(PEDIDO_LINEA)+1 FROM {this.schema}.PEDIDO_LINEA WHERE PEDIDO = @PEDIDO) IS NULL  ";
                sqlcomando = sqlcomando + $" SET @PEDIDO_LINEA = 1 ";
                sqlcomando = sqlcomando + $" ELSE ";
                sqlcomando = sqlcomando + $" SELECT @PEDIDO_LINEA =  MAX(PEDIDO_LINEA)+1 FROM {this.schema}.PEDIDO_LINEA WHERE PEDIDO = @PEDIDO ";
                sqlcomando = sqlcomando + $" IF (SELECT COUNT(*) FROM {this.schema}.PEDIDO_LINEA WHERE PEDIDO = @PEDIDO) <= 0  ";
                sqlcomando = sqlcomando + $" SET @LINEA_USUARIO = 0 ";
                sqlcomando = sqlcomando + $" ELSE ";
                sqlcomando = sqlcomando + $" SELECT @LINEA_USUARIO = COUNT(*)-1 FROM {this.schema}.PEDIDO_LINEA WHERE PEDIDO = @PEDIDO  ";
                sqlcomando = sqlcomando + $" INSERT INTO {this.schema}.PEDIDO_LINEA(PEDIDO,  PEDIDO_LINEA,  BODEGA, LOTE,LOCALIZACION,ARTICULO ,ESTADO,FECHA_ENTREGA,LINEA_USUARIO, PRECIO_UNITARIO, CANTIDAD_PEDIDA,CANTIDAD_A_FACTURA,CANTIDAD_FACTURADA,CANTIDAD_RESERVADA,CANTIDAD_BONIFICAD,CANTIDAD_CANCELADA,TIPO_DESCUENTO,MONTO_DESCUENTO,PORC_DESCUENTO,DESCRIPCION,COMENTARIO,PEDIDO_LINEA_BONIF,UNIDAD_DISTRIBUCIO,FECHA_PROMETIDA,LINEA_ORDEN_COMPRA,RecordDate,CreatedBy,CreateDate) ";
                sqlcomando = sqlcomando + $" VALUES                         (@PEDIDO, @PEDIDO_LINEA, @BODEGA,NULL,NULL        ,@ARTICULO,'N'   ,CONVERT(varchar(10),GETDATE(),120),@LINEA_USUARIO,@PRECIO_UNITARIO,@CANTIDAD      ,@CANTIDAD                 ,@CANTIDAD         ,0                 ,0                 ,0                 ,'P'           ,@DESCUENTO              ,0             ,NULL       ,NULL      ,NULL              ,NULL              ,CONVERT(varchar(10),GETDATE(),120)      ,NULL              , CONVERT(varchar(10),GETDATE(),120), @CREADOR_POR,getdate())       ";
                sqlcomando = sqlcomando + $" UPDATE {this.schema}.EXISTENCIA_BODEGA SET CANT_PEDIDA = CANT_PEDIDA + @CANTIDAD  WHERE BODEGA = @BODEGA AND ARTICULO = @ARTICULO ";
                sqlcomando = sqlcomando + $" IF @EXENTO_IMPUESTO = 'S' OR @ITBM = 0 ";
                sqlcomando = sqlcomando + $" UPDATE {this.schema}.PEDIDO	SET TOTAL_MERCADERIA = TOTAL_MERCADERIA + ROUND(@PRECIO_UNITARIO*@CANTIDAD,4), TOTAL_IMPUESTO1 = TOTAL_IMPUESTO1, TOTAL_A_FACTURAR = TOTAL_A_FACTURAR + ROUND((@PRECIO_UNITARIO*@CANTIDAD)-(@DESCUENTO),3),TOTAL_UNIDADES = TOTAL_UNIDADES + @CANTIDAD, MONTO_DESCUENTO1 = MONTO_DESCUENTO1 + @DESCUENTO WHERE PEDIDO = @PEDIDO ";
                sqlcomando = sqlcomando + $" ELSE ";
                sqlcomando = sqlcomando + $" UPDATE {this.schema}.PEDIDO SET TOTAL_MERCADERIA = TOTAL_MERCADERIA + ROUND(@PRECIO_UNITARIO*@CANTIDAD,4), TOTAL_IMPUESTO1 = TOTAL_IMPUESTO1 + ROUND(((@PRECIO_UNITARIO*@CANTIDAD)- @DESCUENTO) * (@ITBM),4), TOTAL_A_FACTURAR = TOTAL_A_FACTURAR + ROUND(((@PRECIO_UNITARIO*@CANTIDAD)- @DESCUENTO),4)+ROUND(((@PRECIO_UNITARIO*@CANTIDAD)-@DESCUENTO) * @ITBM,4)/*-ROUND(@DESCUENTO,2)*/,TOTAL_UNIDADES = TOTAL_UNIDADES + @CANTIDAD,MONTO_DESCUENTO1 = MONTO_DESCUENTO1 + @DESCUENTO WHERE PEDIDO = @PEDIDO ";
            }

            sqlcomando = sqlcomando + " select @PEDIDO  PEDIDO";
            sqlcomando = sqlcomando + " COMMIT END TRY BEGIN CATCH IF @@TRANCOUNT > 0 ROLLBACK END CATCH ";

            SqlDataReader reader;
            //Se obtiene el reader de Enterprise Library y se convierte a SqlDataReader para poder pasarlo al dynamicReader
            reader = ((RefCountingDataReader)db.ExecuteReader(System.Data.CommandType.Text, sqlcomando)).InnerReader as SqlDataReader;
            //Se transforma al dynamic reader para acceder por nombre y evitar los casting entre tipo y los GET...
            dynamic dynreader = (DynamicDataReader)reader;
            //Se le el reader
            while (dynreader.Read())
            {
                Nropedido = dynreader.PEDIDO;
            }
            dynreader.Close();
            reader.Close();
            return Nropedido;
        }
 public void EliminarPedidoCompleto(PedidoParametrosViewModel PedidoParametros)
 {
     string sqlcomando = "";
     sqlcomando = sqlcomando + $" BEGIN TRY BEGIN TRANSACTION ";
     sqlcomando = sqlcomando + $" DELETE FROM {this.schema}.pedido_linea where pedido = '{PedidoParametros.PEDIDO}'; DELETE FROM {this.schema}.pedido where pedido = '{PedidoParametros.PEDIDO}' ; ";
     sqlcomando = sqlcomando + " COMMIT END TRY BEGIN CATCH IF @@TRANCOUNT > 0 ROLLBACK END CATCH ";
     db.ExecuteNonQuery(System.Data.CommandType.Text, sqlcomando);
 }