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)); }
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))); } }
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); }
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))); } }
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))); } }