Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
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)));
            }
        }