Foros del Web » Programación para mayores de 30 ;) » .NET »

Leer o procesar datos de un txt para Factura Electronica

Estas en el tema de Leer o procesar datos de un txt para Factura Electronica en el foro de .NET en Foros del Web. Buenas a todos, este es mi pimer post en este foro, nada espero que me puedan ayudar, es un poco largo y ojala se entienda. ...
  #1 (permalink)  
Antiguo 28/11/2016, 21:25
 
Fecha de Ingreso: diciembre-2008
Mensajes: 13
Antigüedad: 15 años, 4 meses
Puntos: 0
Leer o procesar datos de un txt para Factura Electronica

Buenas a todos, este es mi pimer post en este foro, nada espero que me puedan ayudar, es un poco largo y ojala se entienda.
El asunto es este, hace poco me pidieron adaptar el programa de FE pero que facture en Dolares (originalmente lo hacia en Pesos), lo pude adaptar para que facture en dolares ya que le pido la cotizacion a la afip, y me devuelve la cotizacion pero para eso tuve que agregar un par de campos a la clase FacturaTemplate, vale aclarar que no sé mucho de c# pero bueno todos los cambios que me pidieron los hize, salvo hasta ahora .
El problema es la lectura de los campos y como procesarlos cuando el formato del archivo de txt es diferente, es decir, hay campos que faltan.

La clase FacturaTemplate que lee los campos del archivo.

Código:
[DelimitedRecord("|")]
public class FacturaTemplate
    {
        public string Comp;

        public string TipoComp;

        public int PtoVenta;

        [FieldTrim(TrimMode.Both)]
        public string TipoDoc;

        [FieldTrim(TrimMode.Both)]
        public long Cuit;

        [FieldConverter(ConverterKind.Date, "dd/MM/yyyy"), FieldTrim(TrimMode.Both)]
        public DateTime FechaFact;

        [FieldTrim(TrimMode.Both)]
        public string Concepto;

        [FieldConverter(ConverterKind.Date, "dd/MM/yyyy"), FieldTrim(TrimMode.Both)]
        public DateTime FechaDesde;

        [FieldConverter(ConverterKind.Date, "dd/MM/yyyy"), FieldTrim(TrimMode.Both)]
        public DateTime FechaHasta;

        [FieldConverter(ConverterKind.Date, "dd/MM/yyyy"), FieldTrim(TrimMode.Both)]
        public DateTime FechaVto

        [FieldTrim(TrimMode.Both)]
        public string FormaPago;

        [FieldTrim(TrimMode.Both)]
        public string CompRelacionado;

        [FieldTrim(TrimMode.Both)]
        public string TipoMoneda = "PES"; // Nuevo Campo, valor predetermiado PES
        
        public double CotizacionMoneda = 1; //Nuevo Campo, valor predeterminado 1
 
        [FieldDelimiter("ITEM|"), FieldTrim(FileHelpers.TrimMode.Both, "|ITEM|")]
        public string[] Items;
El formato archivo txt puede venir de dos formas:
1 - Si es en Dolares, funciona bien.

Comp|TipoComp|PtoVta|TipoDoc|NroCUIT|FechaFact|Con cepto|FechaDesde|FechaHasta|FechaVencimiento|Forma Pago|NroComp|TipoMoneda|Cotizacion|ITEM

Ejemplo:
FCV|B|0010|CUIT|30503456786|21/11/2016|P|21/11/2016|25/11/2016|25/11/2016|EFT|0010-00000034|DOL|1.0|ITEM....

2- Si es en Pesos:

Comp|TipoComp|PtoVta|TipoDoc|NroCUIT|FechaFact|Con cepto|FechaDesde|FechaHasta|FechaVencimiento|Forma Pago|NroComp|ITEM

Ejemplo:
FCV|A|0010|CUIT|30503456786|21/11/2016|P|21/11/2016|25/11/2016|25/11/2016|EFT|0010-00000050|ITEM....

Como pueden ver el Tipo de Moneda y la Cotización no están cuando se factura en Pesos, y cuando eso pasa el valor de TipoMoneda toma el valor de Item, es decir, TipoMoneda = "ITEM" , cuando en realidad deberia decir TipoMoneda = "PES" ya que está facturando en Pesos.

La pregunta es: como puedo hacer para que TipoMoneda y Cotizacion mantengan sus valores predeterminados si estos no bienen en el archivo txt cuando se factura en Pesos?
Espero que se entiendo la ayuda que pido. Quiero que si el tipoMoneda y Cotizacion no bienen en el txt, estos mantegan sus valores por defecto que están en la clase FacturaTemplate, TipoMoneda = "PES" y CotizacionMoneda = 1.

Bueno, saludos.

Última edición por ryder; 28/11/2016 a las 22:50 Razón: Mal formulada la pregunta
  #2 (permalink)  
Antiguo 30/12/2016, 21:21
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
Respuesta: Leer o procesar datos de un txt para Factura Electronica

No entiendo bien como usas ese convertidor FacturaTemplate dentro de tu programa, pero en mi caso (XMLs de facturas en Mexico), cuando proceso el XML (que es la factura electronica) si algun dato no viene, puedo preguntar antes por el valor de un nodo para saber si esta presente con algo como:

Dim emisorRfc As String = ""
Dim nodoEmisor As XmlNode = comprobante.Item("cfdi:Emisor")
If Not nodoEmisor Is Nothing Then
If Not nodoEmisor.Attributes("nombre") Is Nothing Then
emisorNombre = nodoEmisor.Attributes.GetNamedItem("nombre").Value ()
End If
emisorRfc = nodoEmisor.Attributes.GetNamedItem("rfc").Value()
End If


Como tu mencionas TXTs, yo supongo que primero validaria cuantos elementos trae la cadena y si faltan elementos, agregarselo para que pueda "parsearse" correctamente con tu "facturaTemplate".

Etiquetas: c#, electronica, factura
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:05.