public void ProcesarRepresentacionImpresa()
        {
            try
            {
                Ad_Comprobante    adComprobante    = new Ad_Comprobante();
                List <En_Archivo> listaComprobante = adComprobante.ComprobantesPendientesGenerarPdf();

                if (listaComprobante.Count > 0)
                {
                    Task[] taskArray = new Task[listaComprobante.Count];

                    int i = 0;
                    foreach (En_Archivo comprobante in listaComprobante)
                    {
                        En_Archivo comprobanteParam = comprobante;
                        taskArray[i] = Task.Factory.StartNew(() => GenerarPdf(comprobanteParam));
                        i           += 1;
                    }
                    Task.WaitAll(taskArray.ToArray());
                }
            }
            catch (Exception ex)
            {
                log.Error(ex.Message.ToString(), ex);
            }
        }
Exemplo n.º 2
0
        public void ProcesarEnviarComprobantes()
        {
            try
            {
                Ad_Comprobante        adComprobante = new Ad_Comprobante();
                List <En_Comprobante> comprobantes  = adComprobante.ComprobantesPendientesDeEnvio();

                if (comprobantes.Count > 0)
                {
                    Task[] taskArray = new Task[comprobantes.Count];

                    int i = 0;
                    foreach (En_Comprobante comprobante in comprobantes)
                    {
                        En_Comprobante comprobanteParam = comprobante;
                        taskArray[i] = Task.Factory.StartNew(() => EnviarComprobante(comprobanteParam));
                        i           += 1;
                    }
                    Task.WaitAll(taskArray.ToArray());
                }
            }
            catch (Exception ex)
            {
                log.Error(ex.Message.ToString(), ex);
            }
        }
Exemplo n.º 3
0
        public void EnviarComprobante(En_Comprobante comprobante)
        {
            long           idComprobante = comprobante.IdComprobante;
            Ad_Archivo     adArchivo     = new Ad_Archivo();
            Ad_Comprobante adComprobante = new Ad_Comprobante();
            En_Archivo     archivo       = adArchivo.ObtenerArchivoComprobante(idComprobante);
            string         nombre        = archivo.Nombre;

            byte[] contenido                = archivo.Contenido;
            string carpetaTemporal          = adArchivo.ObtenerRutaTemporal("TempENVIO");
            string carpetaArchivo           = Path.GetFileNameWithoutExtension(nombre);
            string rutaCarpetaXML           = Path.Combine(carpetaTemporal, carpetaArchivo);
            string rutaArchivoXML           = Path.Combine(rutaCarpetaXML, nombre);
            string rutaArchivoZIP           = string.Concat(rutaCarpetaXML, ".zip");
            string nombreArchivoZIP         = Path.GetFileName(rutaArchivoZIP);
            string nombreArchivoZipResponse = string.Concat("R-", nombreArchivoZIP);
            string rutaZipResponse          = Path.Combine(carpetaTemporal, nombreArchivoZipResponse);

            CrearCarpeta(rutaCarpetaXML);
            CrearArchivo(rutaArchivoXML, contenido);
            Comprimir(rutaArchivoZIP, rutaCarpetaXML);
            EliminarCarpeta(rutaCarpetaXML);

            ServicePointManager.ServerCertificateValidationCallback = (snder, cert, chain, error) => true;

            byte[] archivoZip = File.ReadAllBytes(rutaArchivoZIP);
            wsSUNAT.sendBillRequest   sendBill    = new wsSUNAT.sendBillRequest();
            wsSUNAT.billServiceClient billService = new wsSUNAT.billServiceClient();

            try
            {
                billService.Open();
                byte[] archivoResponse = billService.sendBill(nombreArchivoZIP, archivoZip, "");
                adComprobante.InsertarCdrPendiente(idComprobante, archivoResponse);
                billService.Close();
                log.Info(string.Format("El comprobante {0}-{1} de la empresa emisora con ruc: {2} se procesó correctamente.",
                                       comprobante.TipoComprobante, comprobante.SerieNumero, comprobante.RucEmisor));
            }
            catch (FaultException ex)
            {
                if (billService.State == CommunicationState.Opened)
                {
                    billService.Close();
                }
                string codigo           = ex.Code.Name.ToLower().Replace("client.", "");
                string mensaje          = ex.Message.ToString();
                int    reintento        = adComprobante.QuitarPendienteEnvio(idComprobante, codigo);
                string mensajeReintento = (reintento == 1) ? "Se dejará de reintentar el envío de éste comprobante." : "";

                log.Error(string.Format("El comprobante {0}-{1} de la empresa emisora con ruc: {2} obtuvo el código de error \"{3}\" con mensaje \"{4}\". {5}",
                                        comprobante.TipoComprobante, comprobante.SerieNumero, comprobante.RucEmisor, codigo, mensaje, mensajeReintento));
            }

            EliminarArchivo(rutaZipResponse);
            EliminarArchivo(rutaArchivoZIP);
        }
 public void InsertarRepresentacionImpresa(En_Archivo archivo)
 {
     try
     {
         Ad_Comprobante adComprobante = new Ad_Comprobante();
         adComprobante.InsertarRepresentacionImpresa(archivo);
     }
     catch (Exception ex)
     {
         log.Error(archivo.NombreXML + " " + ex.Message.ToString(), ex);
     }
 }