private void AsignarCamposOpcionales(FeaEntidades.Reporte.lote_comprobantes lc) { eFact_RN.Engine engine = new eFact_RN.Engine(); if (lc.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento == null) { lc.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento = string.Empty; } if (lc.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento_cae == null) { lc.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento_cae = string.Empty; } if (lc.cabecera_lote.presta_servSpecified == false) { lc.cabecera_lote.presta_serv = 0; lc.cabecera_lote.presta_servSpecified = true; } if (lc.comprobante[0].cabecera.informacion_comprobante.condicion_de_pago == null) { lc.comprobante[0].cabecera.informacion_comprobante.condicion_de_pago = ""; lc.comprobante[0].cabecera.informacion_comprobante.condicion_de_pagoSpecified = true; } if (lc.comprobante[0].cabecera.informacion_comprobante.motivo == null) { lc.comprobante[0].cabecera.informacion_comprobante.motivo = ""; } if (lc.comprobante[0].cabecera.informacion_comprobante.fecha_serv_desde == null) { lc.comprobante[0].cabecera.informacion_comprobante.fecha_serv_desde = ""; } if (lc.comprobante[0].cabecera.informacion_comprobante.fecha_serv_hasta == null) { lc.comprobante[0].cabecera.informacion_comprobante.fecha_serv_hasta = ""; } lc.comprobante[0].cabecera.informacion_comprobante.condicion_de_pagoSpecified = true; lc.comprobante[0].cabecera.informacion_vendedor.condicion_ingresos_brutosSpecified = true; lc.comprobante[0].cabecera.informacion_vendedor.condicion_IVASpecified = true; if (lc.comprobante[0].cabecera.informacion_vendedor.domicilio_calle == null) { lc.comprobante[0].cabecera.informacion_vendedor.domicilio_calle = string.Empty; } if (lc.comprobante[0].cabecera.informacion_vendedor.provincia == null) { lc.comprobante[0].cabecera.informacion_vendedor.provincia = string.Empty; } if (lc.comprobante[0].cabecera.informacion_vendedor.domicilio_piso == null) { lc.comprobante[0].cabecera.informacion_vendedor.domicilio_piso = string.Empty; } if (lc.comprobante[0].cabecera.informacion_vendedor.domicilio_numero == null) { lc.comprobante[0].cabecera.informacion_vendedor.domicilio_numero = string.Empty; } lc.comprobante[0].cabecera.informacion_comprador.condicion_ingresos_brutosSpecified = true; lc.comprobante[0].cabecera.informacion_comprador.condicion_IVASpecified = true; if (lc.comprobante[0].cabecera.informacion_comprador.domicilio_calle == null) { lc.comprobante[0].cabecera.informacion_comprador.domicilio_calle = string.Empty; } if (lc.comprobante[0].cabecera.informacion_comprador.domicilio_numero == null) { lc.comprobante[0].cabecera.informacion_comprador.domicilio_numero = string.Empty; } if (lc.comprobante[0].cabecera.informacion_comprador.domicilio_piso == null) { lc.comprobante[0].cabecera.informacion_comprador.domicilio_piso = string.Empty; } if (lc.comprobante[0].cabecera.informacion_comprador.domicilio_depto == null) { lc.comprobante[0].cabecera.informacion_comprador.domicilio_depto = string.Empty; } if (lc.comprobante[0].cabecera.informacion_comprador.domicilio_sector == null) { lc.comprobante[0].cabecera.informacion_comprador.domicilio_sector = string.Empty; } if (lc.comprobante[0].cabecera.informacion_comprador.domicilio_torre == null) { lc.comprobante[0].cabecera.informacion_comprador.domicilio_torre = string.Empty; } if (lc.comprobante[0].cabecera.informacion_comprador.domicilio_manzana == null) { lc.comprobante[0].cabecera.informacion_comprador.domicilio_manzana = string.Empty; } if (lc.comprobante[0].cabecera.informacion_comprador.provincia == null) { lc.comprobante[0].cabecera.informacion_comprador.provincia = string.Empty; } if (lc.comprobante[0].cabecera.informacion_comprador.localidad == null) { lc.comprobante[0].cabecera.informacion_comprador.localidad = string.Empty; } if (lc.comprobante[0].cabecera.informacion_comprador.cp == null) { lc.comprobante[0].cabecera.informacion_comprador.cp = string.Empty; } if (lc.comprobante[0].cabecera.informacion_comprador.contacto == null) { lc.comprobante[0].cabecera.informacion_comprador.contacto = string.Empty; } if (lc.comprobante[0].cabecera.informacion_comprador.email == null) { lc.comprobante[0].cabecera.informacion_comprador.email = string.Empty; } if (lc.comprobante[0].cabecera.informacion_comprador.telefono == null) { lc.comprobante[0].cabecera.informacion_comprador.telefono = string.Empty; } if (lc.comprobante[0].resumen.impuestos != null) { for (int i = 0; i < lc.comprobante[0].resumen.impuestos.Length; i++) { if (lc.comprobante[0].resumen.impuestos[i].descripcion == null) { lc.comprobante[0].resumen.impuestos[i].descripcion = ""; } lc.comprobante[0].resumen.impuestos[i].codigo_jurisdiccionSpecified = true; lc.comprobante[0].resumen.impuestos[i].importe_impuesto_moneda_origenSpecified = true; lc.comprobante[0].resumen.impuestos[i].porcentaje_impuestoSpecified = true; } } else { //Exportacion no usa impuestos. Crear uno en cero. lc.comprobante[0].resumen.impuestos = new FeaEntidades.Reporte.resumenImpuestos[1]; lc.comprobante[0].resumen.impuestos[0] = new FeaEntidades.Reporte.resumenImpuestos(); lc.comprobante[0].resumen.impuestos[0].descripcion = ""; lc.comprobante[0].resumen.impuestos[0].codigo_jurisdiccionSpecified = true; lc.comprobante[0].resumen.impuestos[0].importe_impuesto_moneda_origenSpecified = true; lc.comprobante[0].resumen.impuestos[0].porcentaje_impuestoSpecified = true; } lc.comprobante[0].resumen.cant_alicuotas_ivaSpecified = true; lc.comprobante[0].resumen.importe_total_impuestos_internosSpecified = true; lc.comprobante[0].resumen.importe_total_impuestos_municipalesSpecified = true; lc.comprobante[0].resumen.importe_total_impuestos_nacionalesSpecified = true; lc.comprobante[0].resumen.importe_total_ingresos_brutosSpecified = true; if (lc.comprobante[0].resumen.descuentos == null) { lc.comprobante[0].resumen.descuentos = new FeaEntidades.Reporte.resumenDescuentos[1]; lc.comprobante[0].resumen.descuentos[0] = new FeaEntidades.Reporte.resumenDescuentos(); lc.comprobante[0].resumen.descuentos[0].alicuota_iva_descuentoSpecified = true; lc.comprobante[0].resumen.descuentos[0].importe_iva_descuentoSpecified = true; } if (lc.comprobante[0].extensiones != null) { if (lc.comprobante[0].extensiones.extensiones_datos_comerciales == null) { lc.comprobante[0].extensiones.extensiones_datos_comerciales = string.Empty; } else { lc.comprobante[0].extensiones.extensiones_datos_comerciales = engine.HexToString(lc.comprobante[0].extensiones.extensiones_datos_comerciales.ToString()); } } for (int i = 0; i < lc.comprobante[0].detalle.linea.Length; i++) { if (lc.comprobante[0].detalle.linea[i] != null) { if (lc.comprobante[0].detalle.linea[i].descripcion.Substring(0, 1) == "%") { lc.comprobante[0].detalle.linea[i].descripcion = engine.HexToString(lc.comprobante[0].detalle.linea[i].descripcion); } if (lc.comprobante[0].detalle.linea[i].importes_moneda_origen == null) { lc.comprobante[0].detalle.linea[i].importes_moneda_origen = new FeaEntidades.Reporte.lineaImportes_moneda_origen(); } lc.comprobante[0].detalle.linea[i].importes_moneda_origen.importe_ivaSpecified = true; lc.comprobante[0].detalle.linea[i].importes_moneda_origen.importe_total_articuloSpecified = true; lc.comprobante[0].detalle.linea[i].importes_moneda_origen.precio_unitarioSpecified = true; lc.comprobante[0].detalle.linea[i].importe_total_descuentosSpecified = true; if (lc.comprobante[0].detalle.linea[i].codigo_producto_vendedor == null) { lc.comprobante[0].detalle.linea[i].codigo_producto_vendedor = ""; } lc.comprobante[0].detalle.linea[i].precio_unitarioSpecified = true; lc.comprobante[0].detalle.linea[i].importe_ivaSpecified = true; if (lc.comprobante[0].detalle.linea[i].alicuota_ivaSpecified.Equals(false)) { lc.comprobante[0].detalle.linea[i].alicuota_ivaSpecified = true; lc.comprobante[0].detalle.linea[i].alicuota_iva = 99; } lc.comprobante[0].detalle.linea[i].cantidadSpecified = true; if (lc.comprobante[0].detalle.linea[i].unidad == null) { lc.comprobante[0].detalle.linea[i].unidad = string.Empty; } if (lc.comprobante[0].detalle.linea[i].indicacion_exento_gravado == null) { lc.comprobante[0].detalle.linea[i].indicacion_exento_gravado = string.Empty; } } else { break; } } }
public static void Procesar(out eFact_Entidades.Lote Lote, eFact_Entidades.Archivo Archivo, eFact_Entidades.Aplicacion Aplicacion, CedEntidades.Sesion Sesion) { //Antes de procesar el archivo grabamos los datos básicos del mismo. if (Archivo.Tipo.ToUpper() != ".TXT" && Archivo.Tipo.ToUpper() != ".XML" && Archivo.Tipo.ToUpper() != ".REC") { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Archivo.TipoDeArchivoIncorrecto("Solo se aceptan archivo TXT o XML."); } FeaEntidades.InterFacturas.lote_comprobantes Lc = new FeaEntidades.InterFacturas.lote_comprobantes(); System.IO.MemoryStream ms; System.Xml.Serialization.XmlSerializer x; switch (Aplicacion.CodigoAplic.ToString()) { case "eFactInterface": { if (Archivo.Tipo.ToUpper() == ".XML") { //StreamReader objReader = new StreamReader(Archivo.Path + "\\" + Archivo.Nombre, Encoding.GetEncoding("iso-8859-1")); StreamReader objReader = new StreamReader(Archivo.Path + "\\" + Archivo.Nombre, Encoding.GetEncoding("utf-8")); string cadena; cadena = objReader.ReadToEnd(); objReader.Close(); byte[] a = new byte[cadena.Length];// esta es la declaracion de tu arreglo System.Text.Encoding codificador; //codificador = System.Text.Encoding.GetEncoding("iso-8859-1"); codificador = System.Text.Encoding.GetEncoding("utf-8"); cadena = cadena.Replace("&", "&"); a = codificador.GetBytes(cadena); ms = new System.IO.MemoryStream(a); ms.Seek(0, System.IO.SeekOrigin.Begin); Lc = new FeaEntidades.InterFacturas.lote_comprobantes(); x = new System.Xml.Serialization.XmlSerializer(Lc.GetType()); Lc = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms); } else if (Archivo.Tipo.ToUpper() == ".TXT") { eFact_RN.Engine Engine = new eFact_RN.Engine(); Lc = new FeaEntidades.InterFacturas.lote_comprobantes(); Engine.LeerMultiRegistro(out Lc, Archivo.Path + "\\" + Archivo.Nombre, Sesion); } else if (Archivo.Tipo.ToUpper() == ".REC") { eFact_RN.Engine Engine = new eFact_RN.Engine(); Lc = new FeaEntidades.InterFacturas.lote_comprobantes(); Engine.LeerRegistroRECE(out Lc, Archivo.Path + "\\" + Archivo.Nombre, Sesion); } break; } default: { break; } } if (Lc.cabecera_lote.cuit_vendedor.ToString().Trim() != Aplicacion.OtrosFiltrosCuit.Trim() && Aplicacion.OtrosFiltrosCuit.Trim() != "") { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Archivo.CUITNoHabilitadoParaElUsuario(Lc.cabecera_lote.cuit_vendedor.ToString()); } eFact_Entidades.Lote lote = new eFact_Entidades.Lote(); lote.CuitVendedor = Lc.cabecera_lote.cuit_vendedor.ToString(); lote.PuntoVenta = Lc.cabecera_lote.punto_de_venta.ToString(); lote.NumeroLote = Lc.cabecera_lote.id_lote.ToString(); lote.CantidadRegistros = Convert.ToInt32(Lc.cabecera_lote.cantidad_reg.ToString()); //Verificar bandeja de salida.----------- int numeroEnvioDisponible = 0; eFact_RN.Lote.ObtenerNumeroEnvioDisponible(out numeroEnvioDisponible, lote.CuitVendedor, lote.NumeroLote, lote.PuntoVenta, Sesion); lote.NumeroEnvio = numeroEnvioDisponible; //--------------------------------------- lote.NombreArch = Archivo.Nombre; if (Lc.cabecera_lote.IdNaturalezaLoteFieldSpecified) { lote.IdNaturalezaLote = Lc.cabecera_lote.IdNaturalezaLoteField; } else { lote.IdNaturalezaLote = ""; } int cantComprobantes = 0; for (int i = 0; i < Lc.comprobante.Length; i++) { if (Lc.comprobante[i] != null) { cantComprobantes += 1; } else { break; } } if (Lc.comprobanteDespacho != null) { for (int i = 0; i < Lc.comprobanteDespacho.Length; i++) { if (Lc.comprobanteDespacho[i] != null) { cantComprobantes += 1; } else { break; } } } if (Lc.cabecera_lote.cantidad_reg != cantComprobantes) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Archivo.ProcesarArchivo("Problemas con la cantidad de registros declarada."); } List<eFact_Entidades.ComprobanteC> cCListVigentes = new List<eFact_Entidades.ComprobanteC>(); List<eFact_Entidades.ComprobanteD> cDListVigentes = new List<eFact_Entidades.ComprobanteD>(); if (Lc.cabecera_lote.IdNaturalezaLoteField != null && Lc.cabecera_lote.IdNaturalezaLoteField == "Compra") { //----- Consultar comprobantes de compras 'Vigentes' -----. if (Lc.comprobante[0] != null) { cCListVigentes = eFact_RN.Comprobante.ConsultarComprobantesCVigentes(Lc.cabecera_lote.cuit_vendedor.ToString(), Sesion); } //----- Consultar despachos 'Vigentes' -----. if (Lc.comprobanteDespacho[0] != null) { cDListVigentes = eFact_RN.Comprobante.ConsultarComprobantesDVigentes(Lc.cabecera_lote.cuit_vendedor.ToString(), Sesion); } } List<eFact_Entidades.Comprobante> cVListVigentes = new List<eFact_Entidades.Comprobante>(); if (Lc.cabecera_lote.IdNaturalezaLoteField != null && Lc.cabecera_lote.IdNaturalezaLoteField == "Venta") { //----- Consultar comprobantes de ventas 'Vigentes' -----. cVListVigentes = eFact_RN.Comprobante.ConsultarComprobantesVigentes(Lc.cabecera_lote.cuit_vendedor.ToString(), Sesion); } for (int i = 0; i < Lc.comprobante.Length; i++) { if (Lc.comprobante[i] != null) { if (lote.IdNaturalezaLote != "Compra") { //Ventas eFact_Entidades.Comprobante c = new eFact_Entidades.Comprobante(); c.IdTipoComprobante = Convert.ToInt16(Lc.comprobante[i].cabecera.informacion_comprobante.tipo_de_comprobante.ToString()); c.NumeroComprobante = Lc.comprobante[i].cabecera.informacion_comprobante.numero_comprobante.ToString(); c.TipoDocComprador = Convert.ToInt16(Lc.comprobante[i].cabecera.informacion_comprador.codigo_doc_identificatorio.ToString()); c.NroDocComprador = Lc.comprobante[i].cabecera.informacion_comprador.nro_doc_identificatorio.ToString(); c.NombreComprador = Lc.comprobante[i].cabecera.informacion_comprador.denominacion; c.Fecha = ConvertirStringToDateTime(Lc.comprobante[i].cabecera.informacion_comprobante.fecha_emision.ToString()); c.NumeroCAE = Convert.ToString(Lc.comprobante[i].cabecera.informacion_comprobante.cae); if (Lc.comprobante[i].cabecera.informacion_comprobante.fecha_obtencion_cae != null && Lc.comprobante[i].cabecera.informacion_comprobante.fecha_obtencion_cae.ToString() != "") { c.FechaCAE = ConvertirStringToDateTime(Lc.comprobante[i].cabecera.informacion_comprobante.fecha_obtencion_cae.ToString()); } if (Lc.comprobante[i].cabecera.informacion_comprobante.fecha_vencimiento_cae != null && Lc.comprobante[i].cabecera.informacion_comprobante.fecha_vencimiento_cae.ToString() != "") { c.FechaVtoCAE = ConvertirStringToDateTime(Lc.comprobante[i].cabecera.informacion_comprobante.fecha_vencimiento_cae.ToString()); } c.IdMoneda = Convert.ToString(Lc.comprobante[i].resumen.codigo_moneda); c.Importe = Convert.ToDecimal(Lc.comprobante[i].resumen.importe_total_factura); if (Lc.comprobante[i].resumen.importes_moneda_origen != null) { c.ImporteMonedaOrigen = Convert.ToDecimal(Lc.comprobante[i].resumen.importes_moneda_origen.importe_total_factura); } c.TipoCambio = Convert.ToDecimal(Lc.comprobante[i].resumen.tipo_de_cambio); if (Lc.comprobante[i].extensiones != null) { if (Lc.comprobante[i].extensiones.extensiones_camara_facturas != null) { if (Lc.comprobante[i].extensiones.extensiones_camara_facturas.clave_de_vinculacion != null) { Lc.comprobante[i].extensiones.extensiones_camara_facturas.clave_de_vinculacion = Lc.comprobante[i].extensiones.extensiones_camara_facturas.clave_de_vinculacion.Trim(); if (Lc.comprobante[i].extensiones.extensiones_camara_facturas.clave_de_vinculacion.Length != 0 && Lc.comprobante[i].extensiones.extensiones_camara_facturas.clave_de_vinculacion.Length != 32) { Lc.comprobante[i].extensiones.extensiones_camara_facturas.clave_de_vinculacion = Cedeira.SV.Fun.CreateMD5Hash(Lc.comprobante[i].extensiones.extensiones_camara_facturas.clave_de_vinculacion); } } } } lote.Comprobantes.Add(c); if (lote.IdNaturalezaLote == "Venta") { List<eFact_Entidades.Comprobante> listAux = cVListVigentes.FindAll((delegate(eFact_Entidades.Comprobante e1) { return e1.NroDocComprador == c.NroDocComprador && e1.PuntoVenta.ToString() == c.PuntoVenta && e1.IdTipoComprobante == c.IdTipoComprobante && e1.NumeroComprobante == c.NumeroComprobante; })); if (listAux.Count != 0) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Archivo.ProcesarArchivo("Comprobante existente. Cuit Comprador: " + c.NroDocComprador + " Punto Venta: " + c.PuntoVenta + " Tipo: " + c.IdTipoComprobante.ToString() + " Nro: " + c.NumeroComprobante); } } } else { //Compras eFact_Entidades.ComprobanteC cC = new eFact_Entidades.ComprobanteC(); cC.PuntoVenta = Lc.comprobante[i].cabecera.informacion_comprobante.punto_de_venta.ToString(); cC.IdTipoComprobante = Convert.ToInt16(Lc.comprobante[i].cabecera.informacion_comprobante.tipo_de_comprobante.ToString()); cC.NumeroComprobante = Lc.comprobante[i].cabecera.informacion_comprobante.numero_comprobante.ToString(); cC.TipoDocVendedor = Convert.ToInt16("80"); cC.NroDocVendedor = Lc.comprobante[i].cabecera.informacion_vendedor.cuit.ToString(); cC.NombreVendedor = Lc.comprobante[i].cabecera.informacion_vendedor.razon_social; cC.Fecha = ConvertirStringToDateTime(Lc.comprobante[i].cabecera.informacion_comprobante.fecha_emision.ToString()); cC.IdMoneda = Convert.ToString(Lc.comprobante[i].resumen.codigo_moneda); cC.Importe = Convert.ToDecimal(Lc.comprobante[i].resumen.importe_total_factura); if (Lc.comprobante[i].resumen.importes_moneda_origen != null) { cC.ImporteMonedaOrigen = Convert.ToDecimal(Lc.comprobante[i].resumen.importes_moneda_origen.importe_total_factura); } cC.TipoCambio = Convert.ToDecimal(Lc.comprobante[i].resumen.tipo_de_cambio); lote.ComprobantesC.Add(cC); List<eFact_Entidades.ComprobanteC> listAux = cCListVigentes.FindAll((delegate(eFact_Entidades.ComprobanteC e1) { return e1.NroDocVendedor == cC.NroDocVendedor && e1.PuntoVenta.ToString() == cC.PuntoVenta && e1.IdTipoComprobante == cC.IdTipoComprobante && e1.NumeroComprobante == cC.NumeroComprobante; })); if (listAux.Count != 0) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Archivo.ProcesarArchivo("Comprobante existente. Cuit Vendedor: " + cC.NroDocVendedor + " Punto Venta: " + cC.PuntoVenta + " Tipo: " + cC.IdTipoComprobante.ToString() + " Nro: " + cC.NumeroComprobante); } } } else { break; } } if (Lc.comprobanteDespacho != null) { for (int i = 0; i < Lc.comprobanteDespacho.Length; i++) { if (Lc.comprobanteDespacho[i] != null) { eFact_Entidades.ComprobanteD cD = new eFact_Entidades.ComprobanteD(); cD.IdTipoComprobante = Convert.ToInt16(Lc.comprobanteDespacho[i].DespachoCabecera.TipoComprobante.ToString()); cD.NumeroDespacho = Lc.comprobanteDespacho[i].DespachoCabecera.NumeroDespacho.ToString(); cD.TipoDocVendedor = Convert.ToInt16(Lc.comprobanteDespacho[i].DespachoCabecera.TipoDocVendedor); cD.NroDocVendedor = Lc.comprobanteDespacho[i].DespachoCabecera.NroDocVendedor.ToString(); cD.NombreVendedor = Lc.comprobanteDespacho[i].DespachoCabecera.NombreVendedor; cD.Fecha = ConvertirStringToDateTime(Lc.comprobanteDespacho[i].DespachoCabecera.Fecha.ToString()); cD.IdMoneda = Convert.ToString(Lc.comprobanteDespacho[i].DespachoResumen.Moneda); cD.Importe = Convert.ToDecimal(Lc.comprobanteDespacho[i].DespachoResumen.ImporteTotal); //cD.ImporteMonedaOrigen = Convert.ToDecimal(Lc.comprobante[i].resumen.importes_moneda_origen.importe_total_factura); cD.TipoCambio = Convert.ToDecimal(Lc.comprobanteDespacho[i].DespachoResumen.TipoCambio); lote.ComprobantesD.Add(cD); List<eFact_Entidades.ComprobanteD> listAux = cDListVigentes.FindAll((delegate(eFact_Entidades.ComprobanteD e1) { return e1.NroDocVendedor == cD.NroDocVendedor && e1.IdTipoComprobante == cD.IdTipoComprobante && e1.NumeroDespacho == cD.NumeroDespacho; })); if (listAux.Count != 0) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Archivo.ProcesarArchivo("Comprobante de Despacho existente. Cuit Vendedor: " + cD.NroDocVendedor + " Tipo: " + cD.IdTipoComprobante.ToString() + " Nro: " + cD.NumeroDespacho); } } else { break; } } } string loteXml = ""; eFact_RN.Lote.SerializarLc(out loteXml, Lc); lote.LoteXml = loteXml; Lote = lote; }