示例#1
0
        public EDEEnviarDocumentoResponse ProcesarNotaCredito(EDEDocumentoElectronico objEDocumentoElectronico)
        {
            EDECommonRequest objEDECommonRequest = new EDECommonRequest();

            objEDECommonRequest.NombreMetodoProcesoAPI = "api/GenerarNotaCredito";
            objEDECommonRequest.NombreMetodoEnvioAPI   = "api/EnviarDocumento";
            objEDECommonRequest.TipoDocumento          = objEDocumentoElectronico.TipoDocumento;
            objEDECommonRequest.NombreCarpetaSinFirmar = "XML_Sin_Firmar_NotaCredito";
            objEDECommonRequest.NombreCarpetaFirmado   = "XML_Firmado_NotaCredito";
            objEDECommonRequest.NombreCarpeaCDR        = "CDR_Response_NotaCredito";
            //REEMPLAZAR AQUI
            objEDECommonRequest.RUC        = objEDocumentoElectronico.RUC;        // "20512588868";
            objEDECommonRequest.UsuarioSOL = objEDocumentoElectronico.UsuarioSOL; //"MODDATOS";
            objEDECommonRequest.ClaveSOL   = objEDocumentoElectronico.ClaveSOL;   //"MODDATOS";

            byte[] fileBytes;
            string someUrl = objEDocumentoElectronico.URLCertificado;//"http://files.centrixperu.com/cliente_1/certificado_digital/certificado.pfx";

            using (var webClient = new WebClient())
            {
                fileBytes = webClient.DownloadData(someUrl);
            }
            objEDECommonRequest.URLCertificado = Convert.ToBase64String(fileBytes);
            objEDECommonRequest.ClaveDigital   = objEDocumentoElectronico.ClaveDigital;//"Linsoft3233";
            return(ProcesarFAE <EDEDocumentoElectronico>(objEDocumentoElectronico, objEDECommonRequest, objEDocumentoElectronico.IdDocumento));
        }
示例#2
0
        public IHttpActionResult GetAnularNC(string usuario, int idCliente, int idVenta)
        {
            EDEDocumentoElectronico    objEDEDocumentoElectronicoResponse;
            EDEEnviarDocumentoResponse objEDERespuesta;
            FacturacionElectronicaBL   oFacturaElectronicaBL = new FacturacionElectronicaBL();

            try
            {
                VentaBL     oVentaBL = new VentaBL(idCliente);
                RespuestaBE rpta     = new RespuestaBE();
                VentaBE     obe      = new VentaBE();
                rpta = oVentaBL.AnularNC(usuario, idCliente, idVenta, out obe);

                if (rpta.codigo == 1 & rpta.isFactOnline)
                {
                    //Generar Estructura Nota de Crédito
                    objEDEDocumentoElectronicoResponse = new EDEDocumentoElectronico();
                    objEDEDocumentoElectronicoResponse = oFacturaElectronicaBL.GenerarEstructuraNotaCredito(obe);
                    //Procesar Nota de Crédito
                    HelperLog.PutLine("Inicio proceso Facturacion Electronica Nota de Crédito");
                    objEDERespuesta = oFacturaElectronicaBL.ProcesarNotaCredito(objEDEDocumentoElectronicoResponse);
                    string msg = "";
                    if (objEDERespuesta.Exito)
                    {
                        msg = "Se envío a SUNAT Correctamente.";
                        if (objEDERespuesta.Procesado)
                        {
                            HelperLog.PutLine(string.Format("Se han actualizado el registro."));
                        }
                        else
                        {
                            HelperLog.PutLine(string.Format("No existen registros para actualizar."));
                        }
                    }
                    else
                    {
                        msg = "Ocurrío un error al enviar a SUNAT.";
                        HelperLog.PutLineError(string.Format(string.Format("Se ha generado el siguiente error: {0}", objEDERespuesta.MensajeError)));
                    }
                    //Actualizar respuesta
                    ActualizarRespuesta(objEDERespuesta);
                    return(Ok(Models.Util.GetBodyResponse(200, rpta.descripcion + " " + msg)));
                }
                else if (rpta.codigo == 1)
                {
                    return(Ok(Models.Util.GetBodyResponse(200, rpta.descripcion)));
                }
                else
                {
                    return(Ok(Models.Util.GetBodyResponse(300, "Ocurrío un error inesperado.")));
                }
            }
            catch (Exception ex)
            {
                /*LogSA.GrabarLogError("SOL TR", user, "GetListarOrdOtrs", ex);*/
                return(Ok(Models.Util.GetBodyResponse(400, ex.Message)));
            }
        }
示例#3
0
        public EDEDocumentoElectronico GenerarEstructuraBoletaFactura(VentaBE objEFAECab)
        {
            objEDEDocumentoElectronico = new EDEDocumentoElectronico();
            objEDEDocumentoElectronico.CodigoBienOServicio = string.Empty; //HARDCODE
            objEDEDocumentoElectronico.CodigoMedioPago     = string.Empty; //HARDCODE
            objEDEDocumentoElectronico.CuentaBancoNacion   = string.Empty; //HARDCODE
            objEDEDatoAdicional = new EDEDatoAdicional();
            lstEDEDatoAdicional = new List <EDEDatoAdicional>();
            objEDEDocumentoElectronico.DatoAdicionales = lstEDEDatoAdicional;
            objEDEDocumentoElectronico.DescuentoGlobal = 0;//HARDCODE
            objEDEDiscrepancia = new EDEDiscrepancia();
            lstEDEDiscrepancia = new List <EDEDiscrepancia>();
            objEDEDocumentoElectronico.Discrepancias = lstEDEDiscrepancia;
            objEDEDocumentoElectronico.DocAnticipo   = string.Empty;//HARDCODE
            //Inicio rellenar datos de emisor
            objEDECompania = new EDECompania
            {
                CodigoAnexo     = objEFAECab.c_codigo_anexo,//HARDCODE
                NombreComercial = objEFAECab.c_emisor_nombre_comercial,
                NombreLegal     = objEFAECab.c_emisor_nombre_legal,
                NroDocumento    = objEFAECab.c_emisor_numero_documento,
                TipoDocumento   = objEFAECab.c_emisor_tipo_documento, //0 doc trib. no. dom. sin ruc
                                                                      //1 doc nacional de identidad
                                                                      //4 carnet de extranjeria
                                                                      //6 registro unico de contribuyente
                                                                      //7 pasaporte
                                                                      //A ced. diplomatica de identidad
            };
            objEDEDocumentoElectronico.Emisor = objEDECompania;
            //Fin rellenar datos de emisor
            objEDEDocumentoElectronico.Exoneradas       = 0;            //HARDCODE
            objEDEDocumentoElectronico.FechaEmision     = objEFAECab.c_fecha_emision;
            objEDEDocumentoElectronico.FechaVencimiento = string.Empty; //HARDCODE
            objEDEDocumentoElectronico.Gratuitas        = objEFAECab.n_gratuitas;
            objEDEDocumentoElectronico.Gravadas         = objEFAECab.n_gravadas;
            objEDEDocumentoElectronico.HoraEmision      = DateTime.Now.ToString("HH:mm:ss");//HARDCODE
            objEDEDocumentoElectronico.IdDocumento      = objEFAECab.c_id_documento;
            objEDEDocumentoElectronico.Inafectas        = objEFAECab.n_inafectas;
            //Inicio Cargar detalle de venta
            listEDEDetalledocumento = new List <EDEDetalleDocumento>();
            lstFAEDet = objEFAECab.loDetalle;
            foreach (VentaDetalleBE objFAEDet in lstFAEDet)
            {
                objEDEDetalledocumento                     = new EDEDetalleDocumento();
                objEDEDetalledocumento.Cantidad            = objFAEDet.n_cantidad;
                objEDEDetalledocumento.CodigoItem          = objFAEDet.c_id_documento;
                objEDEDetalledocumento.CodigoProductoSunat = string.Empty;//HARDCODE
                objEDEDatoAdicional = new EDEDatoAdicional();
                lstEDEDatoAdicional = new List <EDEDatoAdicional>();
                objEDEDetalledocumento.DatosAdcionales = lstEDEDatoAdicional;
                objEDEDetalledocumento.Descripcion     = objFAEDet.c_decripcion;
                objEDEDetalledocumento.Descuento       = objFAEDet.n_descuento;
                objEDEDetalledocumento.Id                    = objFAEDet.n_id_detalle;
                objEDEDetalledocumento.Impuesto              = objFAEDet.n_impuesto;
                objEDEDetalledocumento.ImpuestoSelectivo     = objFAEDet.n_impuesto_selectivo;
                objEDEDetalledocumento.OtroImpuesto          = objFAEDet.n_otro_impuesto;
                objEDEDetalledocumento.PlacaVehiculo         = string.Empty;//HARCODE
                objEDEDetalledocumento.PrecioReferencial     = objFAEDet.n_precio_referencial;
                objEDEDetalledocumento.PrecioUnitario        = objFAEDet.n_precio_unitario;
                objEDEDetalledocumento.TasaImpuestoSelectivo = 0;                         //HARDCODE
                objEDEDetalledocumento.TipoImpuesto          = objFAEDet.n_tipo_impuesto; //10 Gravado Operacion Onerosa
                                                                                          //11 Gravado Retiro por Premio
                                                                                          //12 Gravado Retiro por Donacion
                                                                                          //13 Gravado Retiro
                                                                                          //14 Gravado Retiro por publicidad
                                                                                          //15 Gravado Bonificaciones
                                                                                          //16 Gravado Retiro por entrega a trabaja
                                                                                          //17 Gravado IVAP
                                                                                          //20 Exonerado Operacion Onerosa
                                                                                          //21 Exonerado Transferencia Gratuita
                                                                                          //30 Inafecto Operacion Onerosa
                                                                                          //31 Inafecto Retiro por Bonificacion
                                                                                          //32 Inafecto Retiro
                                                                                          //33 Inafecto Retiro por Muestras Medicas
                                                                                          //34 Inafecto Retiro por Convenito Colectivo
                                                                                          //35 Inafecto Retiro por Premio
                                                                                          //36 Inafecto Retiro por Publicidad
                                                                                          //40 Esportacion
                objEDEDetalledocumento.TipoPrecio = objFAEDet.c_tipo_precio;              //01 Precio unitario (incluye el IGV)
                                                                                          //02 Valor referencial unitario en operaciones no onerosas
                objEDEDetalledocumento.TotalVenta   = objFAEDet.n_total_venta;
                objEDEDetalledocumento.UnidadMedida = objFAEDet.n_unidad_medida;          //NIU
                                                                                          //KG
                                                                                          //ONZ
                                                                                          //LTR
                listEDEDetalledocumento.Add(objEDEDetalledocumento);
            }
            objEDEDocumentoElectronico.Items = listEDEDetalledocumento;
            //Fin Cargar detalle de venta
            objEDELeyenda = new EDELeyenda();
            lstEDELeyenda = new List <EDELeyenda>();
            objEDEDocumentoElectronico.Leyendas        = lstEDELeyenda;
            objEDEDocumentoElectronico.Moneda          = objEFAECab.c_moneda;
            objEDEDocumentoElectronico.MonedaAnticipo  = string.Empty; //HARDCODE
            objEDEDocumentoElectronico.MontoAnticipo   = 0;            //HARDCODE
            objEDEDocumentoElectronico.MontoDetraccion = objEFAECab.n_monto_detraccion;
            objEDEDocumentoElectronico.MontoEnLetras   = objEFAECab.n_monto_letras;
            objEDEDocumentoElectronico.MontoPercepcion = objEFAECab.n_monto_percepcion;
            objEDEDocumentoRelacionado = new EDEDocumentoRelacionado();
            lstEDEDocumentoRelacionado = new List <EDEDocumentoRelacionado>();
            objEDEDocumentoElectronico.OtrosDocumentosRelacionados = lstEDEDocumentoRelacionado;
            //Inicio rellenar datos de receptor
            objEDECompania = new EDECompania
            {
                CodigoAnexo     = string.Empty,//HARDCODE
                NombreComercial = objEFAECab.c_receptor_nombre_legal,
                NombreLegal     = objEFAECab.c_receptor_nombre_legal,
                NroDocumento    = objEFAECab.c_receptor_numero_documento,
                TipoDocumento   = objEFAECab.c_receptor_tipo_documento, //0 doc trib. no. dom. sin ruc
                                                                        //1 doc nacional de identidad
                                                                        //4 carnet de extranjeria
                                                                        //6 registro unico de contribuyente
                                                                        //7 pasaporte
                                                                        //A ced. diplomatica de identidad
            };
            objEDEDocumentoElectronico.Receptor = objEDECompania;
            //Fin rellenar datos de receptor
            objEDEDocumentoRelacionado = new EDEDocumentoRelacionado();
            lstEDEDocumentoRelacionado = new List <EDEDocumentoRelacionado>();
            objEDEDocumentoElectronico.Relacionados    = lstEDEDocumentoRelacionado;
            objEDEDocumentoElectronico.TasaDetraccion  = 0;                              //HARDCODE
            objEDEDocumentoElectronico.TipoDocAnticipo = string.Empty;                   //HARDCODE
            objEDEDocumentoElectronico.TipoDocumento   = objEFAECab.c_tipo_documento;    //01 Factura
                                                                                         //03 Boleta de Venta
                                                                                         //07 Nota de credito
                                                                                         //08 Nota de debito
            objEDEDocumentoElectronico.TipoOperacion      = objEFAECab.c_tipo_operacion; //HARDCODE
            objEDEDocumentoElectronico.TotalIgv           = objEFAECab.n_total_igv;
            objEDEDocumentoElectronico.TotalIsc           = objEFAECab.n_total_isc;
            objEDEDocumentoElectronico.TotalOtrosTributos = objEFAECab.n_total_otros_tributos;
            objEDEDocumentoElectronico.TotalVenta         = objEFAECab.n_total_venta;

            objEDEDocumentoElectronico.RUC            = objEFAECab.RUC;            //"20512588868";
            objEDEDocumentoElectronico.UsuarioSOL     = objEFAECab.UsuarioSOL;     //"MODDATOS";
            objEDEDocumentoElectronico.ClaveSOL       = objEFAECab.ClaveSOL;       //"MODDATOS";
            objEDEDocumentoElectronico.URLCertificado = objEFAECab.URLCertificado; //"MODDATOS";
            objEDEDocumentoElectronico.ClaveDigital   = objEFAECab.ClaveDigital;   //"MODDATOS";
            return(objEDEDocumentoElectronico);
        }
示例#4
0
        public async Task <IHttpActionResult> VentaACuenta(VentaBE obe)
        {
            try
            {
                VentaBL     oVentaBL = new VentaBL(obe.IdCliente);
                RespuestaBE rpta     = new RespuestaBE();
                rpta = oVentaBL.VentaACuenta(obe);

                if (rpta.codigo == 2 & rpta.isFactOnline)
                {
                    EDEDocumentoElectronico    objEDEDocumentoElectronicoResponse;
                    EDEEnviarDocumentoResponse objEDERespuesta;
                    FacturacionElectronicaBL   oFacturaElectronicaBL = new FacturacionElectronicaBL();
                    //Generar Estructura Facturacion electronica
                    objEDEDocumentoElectronicoResponse = new EDEDocumentoElectronico();
                    objEDEDocumentoElectronicoResponse = oFacturaElectronicaBL.GenerarEstructuraBoletaFactura(obe);
                    //Procesar Facturacion electronica
                    HelperLog.PutLine("Inicio proceso Facturacion Electronica Boletas y Facturas");
                    objEDERespuesta = oFacturaElectronicaBL.ProcesarBoletaFactura(objEDEDocumentoElectronicoResponse);
                    string msg         = "";
                    string byteArchivo = "";
                    if (objEDERespuesta.Exito)
                    {
                        ImprimirComprobanteBL oImprimirComprobanteBL = new ImprimirComprobanteBL();
                        byteArchivo = oImprimirComprobanteBL.ImprimirVenta(obe);
                        msg         = "Se envío a SUNAT Correctamente.";
                        if (objEDERespuesta.Procesado)
                        {
                            HelperLog.PutLine(string.Format("Se han actualizado el registro."));
                        }
                        else
                        {
                            HelperLog.PutLine(string.Format("No existen registros para actualizar."));
                        }
                    }
                    else
                    {
                        msg = "Ocurrío un error al enviar a SUNAT.";
                        HelperLog.PutLineError(string.Format(string.Format("Se ha generado el siguiente error: {0}", objEDERespuesta.MensajeError)));
                    }
                    //Actualizar Respuesta
                    ActualizarRespuesta(objEDERespuesta);
                    return(Ok(Models.Util.GetBodyResponseF(200, rpta.descripcion + " " + msg, byteArchivo)));
                }
                else if (rpta.codigo == 1)
                {
                    string byteArchivo = "";
                    //ImprimirComprobanteBL oImprimirComprobanteBL = new ImprimirComprobanteBL();
                    //byteArchivo = oImprimirComprobanteBL.ImprimirVenta(obe);
                    return(Ok(Models.Util.GetBodyResponseF(200, rpta.descripcion, byteArchivo)));
                }
                else if (rpta.codigo == 2)
                {
                    string byteArchivo = "";
                    //ImprimirComprobanteBL oImprimirComprobanteBL = new ImprimirComprobanteBL();
                    //byteArchivo = oImprimirComprobanteBL.ImprimirVenta(obe);
                    return(Ok(Models.Util.GetBodyResponseF(200, rpta.descripcion, byteArchivo)));
                }
                else
                {
                    return(Ok(Models.Util.GetBodyResponse(300, rpta.descripcion)));
                }
            }
            catch (Exception ex)
            {
                //LogSA.GrabarLogError("SOL TR", model.user, "EditarTareas", ex);
                return(Ok(Models.Util.GetBodyResponse(400, ex.Message)));
            }
        }
示例#5
0
        public IHttpActionResult GetAnular(string usuario, int idCliente, int idVenta)
        {
            EDEComunicacionBaja        objEDEComunicacionBajaResponse;
            EDEDocumentoElectronico    objEDEDocumentoElectronico;
            EDEEnviarDocumentoResponse objEDERespuesta;
            FacturacionElectronicaBL   oFacturaElectronicaBL = new FacturacionElectronicaBL();

            try
            {
                VentaBL     oVentaBL = new VentaBL(idCliente);
                RespuestaBE rpta     = new RespuestaBE();
                VentaBE     obe      = new VentaBE();
                rpta = oVentaBL.Anular(usuario, idCliente, idVenta, out obe);

                if (rpta.codigo == 1 & rpta.isFactOnline)
                {
                    DateTime       fecha = DateTime.Now;
                    List <VentaBE> lobe  = new List <VentaBE>();
                    lobe.Add(obe);
                    //Generar Estructura Comunicación de Baja
                    objEDEComunicacionBajaResponse = new EDEComunicacionBaja();
                    objEDEDocumentoElectronico     = new EDEDocumentoElectronico();
                    objEDEComunicacionBajaResponse = oFacturaElectronicaBL.GenerarEstructuraComunicacionBaja(lobe, fecha);
                    //Procesar Comunicación de Baja
                    HelperLog.PutLine("Inicio proceso Facturacion Electronica Comunicación de Baja");
                    objEDEDocumentoElectronico.RUC            = obe.RUC;
                    objEDEDocumentoElectronico.UsuarioSOL     = obe.UsuarioSOL;
                    objEDEDocumentoElectronico.ClaveSOL       = obe.ClaveSOL;
                    objEDEDocumentoElectronico.URLCertificado = obe.URLCertificado;
                    objEDEDocumentoElectronico.ClaveDigital   = obe.ClaveDigital;
                    objEDERespuesta = oFacturaElectronicaBL.ProcesarComunicacionBaja(objEDEComunicacionBajaResponse, objEDEDocumentoElectronico);
                    string msg = "";
                    if (objEDERespuesta.Exito)
                    {
                        msg = "Se envío a SUNAT Correctamente.";
                        if (objEDERespuesta.Procesado)
                        {
                            HelperLog.PutLine(string.Format("Se han actualizado el registro."));
                        }
                        else
                        {
                            HelperLog.PutLine(string.Format("No existen registros para actualizar."));
                        }
                    }
                    else
                    {
                        msg = "Ocurrío un error al enviar a SUNAT.";
                        HelperLog.PutLineError(string.Format(string.Format("Se ha generado el siguiente error: {0}", objEDERespuesta.MensajeError)));
                    }
                    //Actualizar respuesta
                    //ActualizarRespuesta(objEDERespuesta);
                    return(Ok(Models.Util.GetBodyResponse(200, rpta.descripcion + " " + msg)));
                }
                else if (rpta.codigo == 1) //FACTURA - BOLETA (SIN FACTURACION ELECTRONICA)
                {
                    return(Ok(Models.Util.GetBodyResponse(200, rpta.descripcion)));
                }
                else if (rpta.codigo == 2) //NOTA DE VENTA
                {
                    return(Ok(Models.Util.GetBodyResponse(200, rpta.descripcion)));
                }
                else
                {
                    return(Ok(Models.Util.GetBodyResponse(300, "No se encontraron registros.")));
                }
            }
            catch (Exception ex)
            {
                /*LogSA.GrabarLogError("SOL TR", user, "GetListarOrdOtrs", ex);*/
                return(Ok(Models.Util.GetBodyResponse(400, ex.Message)));
            }
        }