Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/11/2016, 21:25
ryder
 
Fecha de Ingreso: diciembre-2008
Mensajes: 13
Antigüedad: 15 años, 5 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