public EDEEnviarDocumentoResponse ProcesarComunicacionBaja(EDEComunicacionBaja objEComunicacionBaja, EDEDocumentoElectronico objEDocumentoElectronico) { EDECommonRequest objEDECommonRequest = new EDECommonRequest(); objEDECommonRequest.NombreMetodoProcesoAPI = "api/GenerarComunicacionBaja"; objEDECommonRequest.NombreMetodoEnvioAPI = "api/EnviarDocumento"; objEDECommonRequest.TipoDocumento = "CB";//CB objEDECommonRequest.NombreCarpetaSinFirmar = "XML_Sin_Firmar_ComunicacionBaja"; objEDECommonRequest.NombreCarpetaFirmado = "XML_Firmado_ComunicacionBaja"; objEDECommonRequest.NombreCarpeaCDR = "CDR_Response_ComunicacionBaja"; //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 <EDEComunicacionBaja>(objEComunicacionBaja, objEDECommonRequest, objEComunicacionBaja.IdDocumento)); }
public EDEComunicacionBaja GenerarEstructuraComunicacionBaja(List <VentaBE> lstEFAECab, DateTime itemFecha) { objEDECompania = new EDECompania { CodigoAnexo = lstEFAECab.FirstOrDefault().c_codigo_anexo,//HARDCODE NombreComercial = lstEFAECab.FirstOrDefault().c_emisor_nombre_comercial, NombreLegal = lstEFAECab.FirstOrDefault().c_emisor_nombre_legal, NroDocumento = lstEFAECab.FirstOrDefault().c_emisor_numero_documento, TipoDocumento = lstEFAECab.FirstOrDefault().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 }; var documentoBaja = new EDEComunicacionBaja { IdDocumento = $"RA-{itemFecha:yyyyMMdd}-001", FechaEmision = itemFecha.ToString("yyyy-MM-dd"), FechaReferencia = itemFecha.AddDays(-1).ToString("yyyy-MM-dd"), Emisor = objEDECompania, Bajas = new List <EDEDocumentoBaja>() }; int indexCab = 1; string Serie = string.Empty; string Correlativo = string.Empty; foreach (var itemCabecera in lstEFAECab) { string[] ArrayNumeroComprobante = itemCabecera.c_id_documento.Split('-'); Serie = ArrayNumeroComprobante[0]; Correlativo = ArrayNumeroComprobante[1]; documentoBaja.Bajas.Add(new EDEDocumentoBaja { Id = indexCab, Correlativo = Correlativo, MotivoBaja = "Anulación por error en el documento", Serie = Serie, TipoDocumento = "01" //01 Factura //03 Boleta de Venta //07 Nota de credito //08 Nota de debito }); indexCab++; } return(documentoBaja); }
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))); } }