private RequestApiBoleta ObtenerDataComprobante(CEN_DataVenta requestData, CENRespVenta respuesta, string tipoOperacion)
        {
            RequestApiBoleta data           = new RequestApiBoleta();
            CENApiNC         obj            = new CENApiNC();
            CADNotaCredito   cadNotaCredito = new CADNotaCredito();

            try
            {
                obj = cadNotaCredito.obtenerDatosSunat(respuesta.venta, CENConstante.g_const_0, respuesta.venta);
                data.tipoOperacion   = tipoOperacion;
                data.tipoDoc         = obj.tipoDoc;
                data.serie           = respuesta.serie;
                data.correlativo     = respuesta.nroDocumento.ToString();
                data.fechaEmision    = obj.fechaEmision;
                data.tipoMoneda      = obj.tipoMoneda;
                data.mtoOperGravadas = obj.mtoOperGravadas;
                data.mtoIGV          = obj.mtoIGV;
                data.totalImpuestos  = obj.totalImpuestos;
                data.mtoImpVenta     = obj.mtoImpVenta;
                data.ublVersion      = obj.ublVersion;

                data.valorVenta = data.mtoImpVenta / 1.18;
                data.valorVenta = Math.Round(data.valorVenta, CENConstante.g_const_2); //returns 1.99
                //Cliente

                data.client = obj.client;

                /*
                 * data.client.tipoDoc = "1";
                 * data.client.numDoc = "77388057";
                 * data.client.address.direccion = "DIRECCION";
                 */
                //Empresa
                data.company = obj.company;

                /*
                 * data.company.address.direccion = "DIRECCION EMPRESA";
                 * data.company.ruc = "10773880579";
                 * data.company.razonSocial = "RAZON SOCIAL EMPRESA";
                 */

                //DATA DE DETALLE
                data.details = obj.details;
                //DATA DE LEGENDS
                data.legends = new List <CENLegends>();

                CLNProcesosGenerales pg     = new CLNProcesosGenerales();
                CENLegends           legend = new CENLegends();
                legend.value = pg.convertirALetras(obj.mtoImpVenta.ToString());
                legend.code  = CENConstante.g_const_1000.ToString();
                data.legends.Add(legend);
            }
            catch (Exception ex)
            {
            }
            return(data);
        }
        public CENRespVenta RegistrarVenta(int codPreventa, int codCliente, int codVendedor, string fechPag, int tipoVenta,
                                           int tipoMoneda, double recargo, double IGV, double total, int sucursal, int tipoDocumentoVenta, int codPuntoEntrega)
        {
            CENRespVenta        respuesta   = new CENRespVenta();
            CADVenta            cad_venta   = new CADVenta();
            CEN_DataVenta       requestData = new CEN_DataVenta();
            RequestApiBoleta    dataApi     = new RequestApiBoleta();
            CLNConexionServicio conServicio = new CLNConexionServicio();
            ResponseApi         responseApi = new ResponseApi();
            int    estadoSUNAT = CENConstante.g_const_0;
            string tramaSUNAT  = CENConstante.g_const_vacio;

            try
            {
                requestData = LlenarDataVenta(codPreventa, codCliente, codVendedor, fechPag, tipoVenta, tipoMoneda,
                                              recargo, IGV, total, sucursal, tipoDocumentoVenta, codPuntoEntrega);
                respuesta = cad_venta.registrarVenta(requestData);
                if (respuesta.venta > CENConstante.g_const_0)
                {
                    //Registro de comprobante sunat
                    CLNComprobanteSunat comprobante = new CLNComprobanteSunat();
                    CENComprobSunat     dataComprob = new CENComprobSunat();
                    int    codigoComprob            = CENConstante.g_const_0;
                    string trama = CENConstante.g_const_vacio;
                    dataComprob.codModulo      = CENConstante.g_const_1;
                    dataComprob.codTransaccion = respuesta.venta;
                    dataComprob.tipDocSunat    = CENConstante.g_const_1;
                    dataComprob.tipDocVenta    = requestData.tipoVenta;
                    dataComprob.estado         = CENConstante.g_const_1;
                    dataComprob.usuario        = requestData.usuario;
                    dataComprob.ip             = CENConstante.g_const_vacio;
                    dataComprob.mac            = CENConstante.g_const_vacio;



                    //AGREGAR TRAMA PARA COMPROBANTE
                    if (requestData.tipoDocumentoVenta == CENConstante.g_const_1)
                    {
                        //Boleta
                        dataApi = ObtenerDataComprobante(requestData, respuesta, "0101");
                        trama   = JsonConvert.SerializeObject(dataApi);
                    }
                    else if (requestData.tipoDocumentoVenta == CENConstante.g_const_2)
                    {
                        //Factura
                        dataApi = ObtenerDataComprobante(requestData, respuesta, "0101");
                        trama   = JsonConvert.SerializeObject(dataApi);
                    }
                    dataComprob.tramEntrada = trama;
                    codigoComprob           = comprobante.RegistrarComprobSunat(dataComprob);

                    if (codigoComprob > CENConstante.g_const_0)
                    {
                        //ENVIO A LA SUNAT
                        responseApi = conServicio.RegistrarBoleta(dataApi);
                        tramaSUNAT  = JsonConvert.SerializeObject(responseApi);
                        if (responseApi.sunatResponse.success)
                        {
                            //ACTUALIZAR COMPROBANTE DE LA SUNAT
                            estadoSUNAT = CENConstante.g_const_1;
                        }
                        else
                        {
                            //ACTUALIZAR COMPROBANTE DE LA SUNAT
                            estadoSUNAT = CENConstante.g_const_2;
                        }

                        /*
                         * if (requestData.tipoDocumentoVenta == CENConstante.g_const_1)
                         * {
                         *  //Boleta
                         *  responseApi= conServicio.RegistrarBoleta(dataApi);
                         *  tramaSUNAT = JsonConvert.SerializeObject(responseApi);
                         *  if (responseApi.sunatResponse.success)
                         *  {
                         *      //ACTUALIZAR COMPROBANTE DE LA SUNAT
                         *      estadoSUNAT = CENConstante.g_const_1;
                         *  }
                         *  else
                         *  {
                         *      //ACTUALIZAR COMPROBANTE DE LA SUNAT
                         *      estadoSUNAT = CENConstante.g_const_2;
                         *  }
                         *
                         * }
                         * else if (requestData.tipoDocumentoVenta == CENConstante.g_const_2)
                         * {
                         *  //Factura
                         *
                         * }
                         */
                        comprobante.ActualizarComprobSunat(codigoComprob, tramaSUNAT, estadoSUNAT);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(respuesta);
        }
        private CEN_DataVenta LlenarDataVenta(int codPreventa, int codCliente, int codVendedor, string fechPag, int tipoVenta,
                                              int tipoMoneda, double recargo, double IGV, double total, int sucursal, int tipoDocumentoVenta, int codPuntoEntrega)
        {
            CEN_DataVenta data      = new CEN_DataVenta();
            CLNConsultas  consultas = new CLNConsultas();

            try
            {
                data.codPreventa      = codPreventa;
                data.codCliente       = codCliente;
                data.codVendedor      = codVendedor;
                data.fechaTransaccion = DateTime.Now;
                data.fechaPago        = consultas.ConvertFechaStringToDate(fechPag);
                data.importeRecargo   = recargo;
                data.importeTotal     = total;
                data.IGV                = IGV;
                data.sucursal           = sucursal;
                data.tipoVenta          = tipoVenta;
                data.tipoMoneda         = tipoMoneda;
                data.proceso            = CENConstante.g_const_1;
                data.tipoDocumentoVenta = tipoDocumentoVenta;
                data.codPuntoEntrega    = codPuntoEntrega;
                data.estado             = CENConstante.g_const_1;
                //Verificar registro pendiente de pago

                /*
                 * TimeSpan timePago = data.fechaPago - DateTime.Now;
                 * int diaPago = timePago.Days;
                 * if (diaPago > CENConstante.g_const_0)
                 * {
                 */
                if (data.tipoVenta == CENConstante.g_const_1) // contado
                {
                    //Pendiente de pago
                    //data.estado = CENConstante.g_const_1;
                    //Registro de clase de pendiente de cobro
                    data.cuentaCobro.fechaCobro       = data.fechaPago;
                    data.cuentaCobro.fechaTransaccion = DateTime.Now;
                    data.cuentaCobro.horaTransaccion  = DateTime.Now.ToString(CENConstante.g_const_horaFech);
                    data.cuentaCobro.responsable      = CENConstante.g_const_vacio;
                    data.cuentaCobro.estado           = CENConstante.g_const_1;
                    data.cuentaCobro.importe          = data.importeTotal;

                    //Validamos que si se debe registrar cuenta cobro
                    data.est_reg_cue_cob = CENConstante.g_const_1;
                }
                //Tipo de pago
                if (data.tipoVenta == CENConstante.g_const_1) // contado
                {
                    //TOTAL
                    data.tipoPago = CENConstante.g_const_1;
                }
                else //credito
                {
                    //PARCIAL
                    data.tipoPago = CENConstante.g_const_2;
                    //Generar prestamo
                    data.prestamo.fechaTransaccion = DateTime.Now;
                    data.prestamo.importeTotal     = total;
                    data.prestamo.interesTotal     = CENConstante.g_const_0;
                    data.prestamo.nroCuotas        = CENConstante.g_const_1;
                    data.prestamo.estado           = CENConstante.g_const_1;
                    TimeSpan ts = data.fechaPago - DateTime.Now;
                    data.prestamo.plazo = ts.Days;
                    //Generar cronograma
                    CENCronograma cronograma = new CENCronograma();
                    cronograma.fechaPago = data.fechaPago;
                    cronograma.importe   = total;
                    cronograma.nroCuota  = CENConstante.g_const_1;
                    cronograma.estado    = CENConstante.g_const_1;
                    data.listCuotas.Add(cronograma);
                }

                return(data);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #4
0
        public CENRespVenta registrarVenta(CEN_DataVenta data)
        {
            //DESCRIPCION: REGISTRAR VENTA
            CENRespVenta  respuesta = new CENRespVenta();
            SqlDataReader dr;                           //data reader
            CADConexion   conector = new CADConexion(); // Conexión
            CAD_Consulta  consulta = new CAD_Consulta();

            try
            {
                string listaCuotas = ObjectToXMLGeneric <List <CENCronograma> >(data.listCuotas);
                string prestamo    = ObjectToXMLGeneric <CENPrestamo>(data.prestamo);
                string cuentaCobro = ObjectToXMLGeneric <CEN_CuentaCobro>(data.cuentaCobro);
                using (Connection = new SqlConnection(conector.CxSQL()))
                {
                    conector.AbrirConexion(Connection);

                    using (SqlCommand Command = new SqlCommand("pa_registrar_venta", Connection))
                    {
                        Command.CommandType = CommandType.StoredProcedure;
                        //Command.Parameters.Add("@p_serie", SqlDbType.VarChar,CENConstante.g_const_20).Value = data.serie;
                        //Command.Parameters.Add("@p_nroDocumento", SqlDbType.Int).Value = data.nroDocumento;
                        Command.Parameters.Add("@p_tipoPago", SqlDbType.SmallInt).Value     = data.tipoPago;
                        Command.Parameters.Add("@p_codPreventa", SqlDbType.Int).Value       = data.codPreventa;
                        Command.Parameters.Add("@p_codCliente", SqlDbType.Int).Value        = data.codCliente;
                        Command.Parameters.Add("@p_codVendedor", SqlDbType.Int).Value       = data.codVendedor;
                        Command.Parameters.Add("@p_fechaTransaccion", SqlDbType.Date).Value = data.fechaTransaccion;
                        Command.Parameters.Add("@p_tipoMoneda", SqlDbType.SmallInt).Value   = data.tipoMoneda;
                        Command.Parameters.Add("@p_tipoVenta", SqlDbType.SmallInt).Value    = data.tipoVenta;
                        Command.Parameters.Add("@p_tipoCambio", SqlDbType.Money).Value      = data.tipoCambio;
                        Command.Parameters.Add("@p_estado", SqlDbType.SmallInt).Value       = data.estado;
                        Command.Parameters.Add("@p_importeTotal", SqlDbType.Money).Value    = data.importeTotal;
                        Command.Parameters.Add("@p_importeRecargo", SqlDbType.Money).Value  = data.importeRecargo;
                        Command.Parameters.Add("@p_usuario", SqlDbType.VarChar, CENConstante.g_const_20).Value = data.usuario;
                        Command.Parameters.Add("@p_ip", SqlDbType.VarChar, CENConstante.g_const_20).Value      = data.ip;
                        Command.Parameters.Add("@p_mac", SqlDbType.VarChar, CENConstante.g_const_20).Value     = data.mac;
                        Command.Parameters.Add("@p_prestamo", SqlDbType.Xml).Value          = prestamo;
                        Command.Parameters.Add("@p_listaCronograma", SqlDbType.Xml).Value   = listaCuotas;
                        Command.Parameters.Add("@p_proceso", SqlDbType.SmallInt).Value      = data.proceso;
                        Command.Parameters.Add("@p_codSucursal", SqlDbType.Int).Value       = data.sucursal;
                        Command.Parameters.Add("@p_fechaPago", SqlDbType.Date).Value        = data.fechaPago;
                        Command.Parameters.Add("@p_prFechaTrans", SqlDbType.DateTime).Value = data.prestamo.fechaTransaccion;
                        Command.Parameters.Add("@p_cuentaCobro", SqlDbType.Xml).Value       = cuentaCobro;
                        Command.Parameters.Add("@p_IGV", SqlDbType.Money).Value             = data.IGV;
                        Command.Parameters.Add("@p_tipoDocVenta", SqlDbType.TinyInt).Value  = data.tipoDocumentoVenta;
                        Command.Parameters.Add("@p_codPuntoEntrega", SqlDbType.Int).Value   = data.codPuntoEntrega;
                        Command.Parameters.Add("@p_est_reg_cue_cob", SqlDbType.Int).Value   = data.est_reg_cue_cob;
                        Command.CommandTimeout = CENConstante.g_const_0;
                        dr = Command.ExecuteReader();
                        if (dr.HasRows)
                        {
                            CENPreventaFiltroPA preventa = new CENPreventaFiltroPA();
                            while (dr.Read())
                            {
                                if (dr["flag"] != DBNull.Value)
                                {
                                    respuesta.flag = Convert.ToInt32(dr["flag"].ToString().Trim());
                                }
                                if (dr["venta"] != DBNull.Value)
                                {
                                    respuesta.venta = Convert.ToInt32(dr["venta"].ToString());
                                }
                                if (dr["msje"] != DBNull.Value)
                                {
                                    respuesta.msje = dr["msje"].ToString().Trim();
                                }
                                if (dr["serie"] != DBNull.Value)
                                {
                                    respuesta.serie = dr["serie"].ToString().Trim();
                                }
                                if (dr["nroDocumento"] != DBNull.Value)
                                {
                                    respuesta.nroDocumento = Convert.ToInt32(dr["nroDocumento"].ToString().Trim());
                                }
                            }
                        }
                        dr.Close();
                    }
                }
                return(respuesta);
            }

            catch (Exception ex)
            {
                throw ex;
            }

            finally
            {
                conector.CerrarConexion(Connection);
            }
        }