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:
El formato archivo txt puede venir de dos formas:[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;
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.