public static FacturaDTO GenerarFactura(CfdiV33.Comprobante comprobante, string tipo)
        {
            FacturaDTO factura = new FacturaDTO();

            try
            {
                factura = new FacturaDTO()
                {
                    tipo           = tipo,
                    rfcEmisor      = comprobante.Emisor.Rfc,
                    rfcReceptor    = comprobante.Receptor.Rfc,
                    fechaDocto     = comprobante.Fecha,
                    fechaTimbrado  = comprobante.Complemento.Any[0].Attributes[1].Value,
                    noFactura      = comprobante.Folio,
                    UUID           = comprobante.Complemento.Any[0].Attributes[2].Value,
                    importeFactura = comprobante.Total,
                    moneda         = comprobante.Moneda.ToString(),
                    tipoCambio     = comprobante.TipoCambio.ToString()
                };
            }
            catch (Exception ex)
            {
                LogErrores.Write("Ocurrio un error al Generar la factura con la V3.3 con el folio: " + comprobante.Folio, ex);
            }

            return(factura);
        }
        public static void PrintArchivo(string path, string preFile, List <FacturaDTO> facturas)
        {
            StringBuilder sbFacturas = new StringBuilder();

            try
            {
                if (facturas.Count > 0)
                {
                    sbFacturas.AppendLine("Tipo, RFCEmisor, RFCReceptor, FechaDocto, FechaTimbrado, NoFactura, UUID, ImporteFactura, Moneda, TipodeCambio");

                    foreach (FacturaDTO fac in facturas)
                    {
                        sbFacturas.AppendLine(string.Format("{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}", fac.tipo, fac.rfcEmisor, fac.rfcReceptor, fac.fechaDocto, fac.fechaTimbrado, fac.noFactura, fac.UUID, fac.importeFactura, fac.moneda, fac.tipoCambio));
                    }

                    using (StreamWriter writer = new StreamWriter(path + "\\" + preFile + "_" + DateTime.Now.ToString("dd-MM-yyyy-HHmmss") + ".csv", true))
                    {
                        writer.WriteLine(sbFacturas.ToString());
                        writer.Close();
                    }
                }
                else
                {
                    Bitacoras.Write("La lista de facturas viene vacía");
                }
            }
            catch (Exception ex)
            {
                LogErrores.Write("Ocurrio un error al Imprimir el archivo de facturas", ex);
            }
        }
 public static void MoveFacturasXML(string path, List <string> facturasXML)
 {
     try
     {
         if (facturasXML.Count > 0)
         {
             foreach (string file in facturasXML)
             {
                 File.Move(file, path + "\\Procesadas\\" + Path.GetFileName(file));
             }
         }
         else
         {
             Bitacoras.Write("La lista de archivos viene vacía");
         }
     }
     catch (Exception ex)
     {
         LogErrores.Write("Ocurrio un error al mover los archivos de facturas procesados", ex);
     }
 }
示例#4
0
        public static void ProcesarFacturas()
        {
            List <FacturaDTO> facturasCliente    = new List <FacturaDTO>();
            List <string>     facturasProcesadas = new List <string>();

            try
            {
                string[] facturas = Directory.GetFiles(pathFacturasClientes, "*.xml");

                if (facturas.Count() > 0)
                {
                    foreach (string file in facturas)
                    {
                        try
                        {
                            XmlSerializer       serielizer     = new XmlSerializer(typeof(CfdiV32.Comprobante));
                            XmlTextReader       reader         = new XmlTextReader(file);
                            CfdiV32.Comprobante comprobanteV32 = (CfdiV32.Comprobante)serielizer.Deserialize(reader);

                            FacturaDTO fac = CommonManagement.GenerarFactura(comprobanteV32, "C");

                            if (!string.IsNullOrEmpty(fac.noFactura))
                            {
                                facturasCliente.Add(fac);
                                facturasProcesadas.Add(file);
                            }

                            reader.Dispose();
                        }
                        catch (Exception e)
                        {
                            LogErrores.Write(string.Format("El archivo {0} no soporta la version 3.2", file), e);

                            try
                            {
                                XmlSerializer       serielizer     = new XmlSerializer(typeof(CfdiV33.Comprobante));
                                XmlTextReader       reader         = new XmlTextReader(file);
                                CfdiV33.Comprobante comprobanteV33 = (CfdiV33.Comprobante)serielizer.Deserialize(reader);
                                facturasCliente.Add(CommonManagement.GenerarFactura(comprobanteV33, "C"));
                                facturasProcesadas.Add(file);
                                reader.Dispose();
                            }
                            catch (Exception eV33)
                            {
                                LogErrores.Write(string.Format("El archivo {0} no soporta la version 3.3", file), eV33);
                            }
                        }
                    }

                    CommonManagement.PrintArchivo(pathOutClientes, "InvoiceClientes", facturasCliente);
                    CommonManagement.MoveFacturasXML(pathFacturasClientes, facturasProcesadas);
                }
                else
                {
                    Bitacoras.Write("No se encontraron Facturas de Clientes que procesar");
                }
            }
            catch (Exception ex)
            {
                LogErrores.Write("Ocurrio un error al Procesar las facturas de clientes", ex);
            }
        }