コード例 #1
0
ファイル: Comprobante.cs プロジェクト: pjeconde/eFact
 public List<eFact_Entidades.ComprobanteD> ConsutarComprobantesDVigentesXFecha(string FechaDsd, string FechaHst, string CuitEmpresa)
 {
     StringBuilder commandText = new StringBuilder();
     commandText.Append("Select ComprobantesD.*, Lotes.CuitVendedor as CuitEmpresa, '' as LoteXML from ComprobantesD, Lotes, WF_Op where ComprobantesD.IdLote=Lotes.IdLote and Lotes.IdOp=WF_Op.IdOp and WF_Op.IdEstado in ('Vigente') ");
     commandText.Append("and convert(varchar(8), ComprobantesD.Fecha, 112) >= '" + FechaDsd + "' and convert(varchar(8), ComprobantesD.Fecha, 112) <= '" + FechaHst + "' ");
     if (CuitEmpresa != "")
     {
         commandText.Append("and Lotes.CuitVendedor = '" + CuitEmpresa + "' ");
     }
     commandText.Append("order by ComprobantesD.IdLote");
     DataSet ds = new DataSet();
     ds = (DataSet)Ejecutar(commandText.ToString(), TipoRetorno.DS, Transaccion.Acepta, sesion.CnnStr);
     List<eFact_Entidades.ComprobanteD> ComprobantesD = new List<eFact_Entidades.ComprobanteD>();
     if (ds.Tables.Count == 0)
     {
         throw new Microsoft.ApplicationBlocks.ExceptionManagement.Validaciones.NoHayDatos();
     }
     else
     {
         for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
         {
             eFact_Entidades.ComprobanteD ComprobanteD = new eFact_Entidades.ComprobanteD();
             CopiarConLoteXML(ds, i, ComprobanteD);
             ComprobantesD.Add(ComprobanteD);
         }
     }
     return ComprobantesD;
 }
コード例 #2
0
ファイル: Lote.cs プロジェクト: pjeconde/eFact
 private void Copiar(DataSet ds, int NroRowPpal, eFact_Entidades.Lote Hasta)
 {
     DataRow Desde;
     Desde = ds.Tables[0].Rows[NroRowPpal];
     Hasta.IdLote = Convert.ToInt32(Desde["IdLote"]);
     Hasta.CuitVendedor = Convert.ToString(Desde["CuitVendedor"]);
     Hasta.PuntoVenta = Convert.ToString(Desde["PuntoVenta"]);
     Hasta.NumeroLote = Convert.ToString(Desde["NumeroLote"]);
     Hasta.NumeroEnvio = Convert.ToInt32(Desde["NumeroEnvio"]);
     Hasta.IdOp = Convert.ToInt32(Desde["IdOp"]);
     Hasta.FechaAlta = Convert.ToDateTime(Desde["FechaAlta"]);
     if (Desde["FechaEnvio"].ToString() == "")
     {
         Desde["FechaEnvio"] = "31/12/9998";
     }
     Hasta.FechaEnvio = Convert.ToDateTime(Desde["FechaEnvio"]);
     Hasta.NombreArch = Convert.ToString(Desde["NombreArch"]);
     Hasta.CantidadRegistros = Convert.ToInt32(Desde["CantidadRegistros"]);
     Hasta.LoteXml = Convert.ToString(Desde["LoteXml"]);
     Hasta.LoteXmlIF = Convert.ToString(Desde["LoteXmlIF"]);
     Hasta.IdNaturalezaLote = Convert.ToString(Desde["IdNaturalezaLote"]);
     Hasta.WF = new CedEntidades.WF();
     Hasta.WF.IdOp = Convert.ToInt32(Desde["IdOp"]);
     Hasta.WF.IdFlow = Convert.ToString(Desde["IdFlow"]);
     Hasta.WF.DescrFlow = Convert.ToString(Desde["DescrFlow"]);
     Hasta.WF.IdCircuito = Convert.ToString(Desde["IdCircuito"]);
     Hasta.WF.IdCircuitoOrig = Hasta.WF.IdCircuito;
     Hasta.WF.DescrCircuito = Convert.ToString(Desde["DescrCircuito"]);
     Hasta.WF.IdNivSeg = Convert.ToInt32(Desde["IdNivSeg"]);
     Hasta.WF.DescrNivSeg = Convert.ToString(Desde["DescrNivSeg"]);
     Hasta.WF.DescrOp = Convert.ToString(Desde["DescrOp"]);
     Hasta.WF.IdEstado = Convert.ToString(Desde["IdEstado"]);
     Hasta.WF.UltActualiz = Cedeira.SV.db.ByteArray2TimeStamp((byte[])Desde["UltActualiz"]);
     Hasta.WF.DescrEstado = Convert.ToString(Desde["DescrEstado"]);
     Hasta.WF.Sesion = sesion;
     //Comprobantes
     DataRow[] dr = ds.Tables[1].Select("IdLote = " + Convert.ToInt32(Hasta.IdLote));
     Hasta.Comprobantes = new List<eFact_Entidades.Comprobante>();
     for (int i = 0; i < dr.Length; i++)
     {
         eFact_Entidades.Comprobante c = new eFact_Entidades.Comprobante();
         c.IdLote = Convert.ToInt32(dr[i]["IdLote"]);
         c.IdTipoComprobante = Convert.ToInt16(dr[i]["IdTipoComprobante"]);
         c.NumeroComprobante = Convert.ToString(dr[i]["NumeroComprobante"]);
         c.IdMoneda = Convert.ToString(dr[i]["IdMoneda"]);
         c.Importe = Convert.ToDecimal(dr[i]["Importe"]);
         c.NroDocComprador = Convert.ToString(dr[i]["NroDocComprador"]);
         c.TipoDocComprador = Convert.ToInt16(dr[i]["TipoDocComprador"]);
         c.NombreComprador = Convert.ToString(dr[i]["NombreComprador"]);
         c.Fecha= Convert.ToDateTime(dr[i]["Fecha"]);
         c.NumeroCAE = Convert.ToString(dr[i]["NumeroCAE"]);
         if (dr[i]["FechaCAE"].ToString() == "")
         {
             dr[i]["FechaCAE"] = "31/12/9998";
         }
         c.FechaCAE = Convert.ToDateTime(dr[i]["FechaCAE"]);
         if (dr[i]["FechaVtoCAE"].ToString() == "")
         {
             dr[i]["FechaVtoCAE"] = "31/12/9998";
         }
         c.FechaVtoCAE = Convert.ToDateTime(dr[i]["FechaVtoCAE"]);
         if (dr[i]["ImporteMonedaOrigen"].ToString() != "")
         {
             c.ImporteMonedaOrigen = Convert.ToDecimal(dr[i]["ImporteMonedaOrigen"]);
         }
         if (dr[i]["ImporteMonedaOrigen"].ToString() != "")
         {
             c.TipoCambio = Convert.ToDecimal(dr[i]["TipoCambio"]);
         }
         if (dr[i]["EstadoIFoAFIP"].ToString() != "")
         {
             c.EstadoIFoAFIP = Convert.ToString(dr[i]["EstadoIFoAFIP"]);
         }
         if (dr[i]["ComentarioIFoAFIP"].ToString() != "")
         {
             c.ComentarioIFoAFIP = Convert.ToString(dr[i]["ComentarioIFoAFIP"]);
         }
         Hasta.Comprobantes.Add(c);
     }
     //ComprobantesC (Compras)
     dr = ds.Tables[2].Select("IdLote = " + Convert.ToInt32(Hasta.IdLote));
     Hasta.ComprobantesC = new List<eFact_Entidades.ComprobanteC>();
     for (int i = 0; i < dr.Length; i++)
     {
         eFact_Entidades.ComprobanteC cC = new eFact_Entidades.ComprobanteC();
         cC.IdLote = Convert.ToInt32(dr[i]["IdLote"]);
         cC.PuntoVenta = Convert.ToString(dr[i]["PuntoVenta"]);
         cC.IdTipoComprobante = Convert.ToInt16(dr[i]["IdTipoComprobante"]);
         cC.NumeroComprobante = Convert.ToString(dr[i]["NumeroComprobante"]);
         cC.IdMoneda = Convert.ToString(dr[i]["IdMoneda"]);
         cC.Importe = Convert.ToDecimal(dr[i]["Importe"]);
         cC.NroDocVendedor = Convert.ToString(dr[i]["NroDocVendedor"]);
         cC.TipoDocVendedor = Convert.ToInt16(dr[i]["TipoDocVendedor"]);
         cC.NombreVendedor = Convert.ToString(dr[i]["NombreVendedor"]);
         cC.Fecha = Convert.ToDateTime(dr[i]["Fecha"]);
         if (dr[i]["ImporteMonedaOrigen"].ToString() != "")
         {
             cC.ImporteMonedaOrigen = Convert.ToDecimal(dr[i]["ImporteMonedaOrigen"]);
         }
         if (dr[i]["ImporteMonedaOrigen"].ToString() != "")
         {
             cC.TipoCambio = Convert.ToDecimal(dr[i]["TipoCambio"]);
         }
         Hasta.ComprobantesC.Add(cC);
     }
     //ComprobantesC (Compras - Despachos de Impotación)
     dr = ds.Tables[3].Select("IdLote = " + Convert.ToInt32(Hasta.IdLote));
     Hasta.ComprobantesD = new List<eFact_Entidades.ComprobanteD>();
     for (int i = 0; i < dr.Length; i++)
     {
         eFact_Entidades.ComprobanteD cD = new eFact_Entidades.ComprobanteD();
         cD.IdLote = Convert.ToInt32(dr[i]["IdLote"]);
         cD.IdTipoComprobante = Convert.ToInt16(dr[i]["IdTipoComprobante"]);
         cD.NumeroDespacho = Convert.ToString(dr[i]["NumeroDespacho"]);
         cD.NroDocVendedor = Convert.ToString(dr[i]["NroDocVendedor"]);
         cD.TipoDocVendedor = Convert.ToInt16(dr[i]["TipoDocVendedor"]);
         cD.NombreVendedor = Convert.ToString(dr[i]["NombreVendedor"]);
         cD.Fecha = Convert.ToDateTime(dr[i]["Fecha"]);
         cD.IdMoneda = Convert.ToString(dr[i]["IdMoneda"]);
         cD.Importe = Convert.ToDecimal(dr[i]["Importe"]);
         //if (dr[i]["ImporteMonedaOrigen"].ToString() != "")
         //{
         //    cD.ImporteMonedaOrigen = Convert.ToDecimal(dr[i]["ImporteMonedaOrigen"]);
         //}
         //if (dr[i]["ImporteMonedaOrigen"].ToString() != "")
         //{
         //    cD.TipoCambio = Convert.ToDecimal(dr[i]["TipoCambio"]);
         //}
         Hasta.ComprobantesD.Add(cD);
     }
     //WF
     dr = ds.Tables[4].Select("IdLote = " + Convert.ToInt32(Hasta.IdLote));
     Hasta.WF.Log = new List<CedEntidades.Log>();
     for (int i = 0; i < dr.Length; i++)
     {
         CedEntidades.Log l = new CedEntidades.Log();
         l.Circuito.IdCircuito = Convert.ToString(dr[i]["IdCircuito"]);
         l.Comentario = Convert.ToString(dr[i]["Comentario"]);
         l.Estado = Convert.ToString(dr[i]["Estado"]);
         l.Evento.Id = Convert.ToString(dr[i]["IdEvento"]);
         l.Evento.Descr = Convert.ToString(dr[i]["Evento"]);
         l.Fecha = Convert.ToDateTime(dr[i]["Fecha"]);
         l.Flow.IdFlow = Convert.ToString(dr[i]["IdFlow"]);
         l.Grupo.Id = Convert.ToString(dr[i]["IdGrupo"]);
         l.Grupo.Descr = Convert.ToString(dr[i]["DescrGrupo"]);
         l.IdLog = Convert.ToInt32(dr[i]["IdLog"]);
         l.IdNivSeg = Convert.ToInt32(dr[i]["IdNivSeg"]);
         l.Responsable = Convert.ToString(dr[i]["Responsable"]);
         l.Supervisor = Convert.ToBoolean(dr[i]["Supervisor"]);
         l.SupervisorNivel = Convert.ToByte(dr[i]["SupervisorNivel"]);
         l.Usuario.IdUsuario = Convert.ToString(dr[i]["IdUsuario"]);
         l.Usuario.Nombre = Convert.ToString(dr[i]["Nombre"]);
         Hasta.WF.Log.Add(l);
     }
     dr = ds.Tables[5].Select("IdLote = " + Convert.ToInt32(Hasta.IdLote));
     Hasta.WF.EventosPosibles = new List<CedEntidades.Evento>();
     for (int i = 0; i < dr.Length; i++)
     {
         CedEntidades.Evento evento = new CedEntidades.Evento();
         evento.Flow.IdFlow = Convert.ToString(dr[i]["IdFlow"]);
         evento.Id = Convert.ToString(dr[i]["IdEvento"]);
         evento.Descr = Convert.ToString(dr[i]["DescrEvento"]);
         evento.TextoAccion = Convert.ToString(dr[i]["TextoAccion"]);
         evento.IdEstadoDsd.IdEstado = Convert.ToString(dr[i]["IdEstadoDsd"]);
         evento.IdEstadoHst.IdEstado = Convert.ToString(dr[i]["IdEstadoHst"]);
         evento.Automatico = Convert.ToBoolean(dr[i]["Automatico"]);
         evento.CXO = Convert.ToBoolean(dr[i]["CXO"]);
         evento.XLote = Convert.ToBoolean(dr[i]["XLote"]);
         evento.Flow.DescrFlow = Convert.ToString(dr[i]["DescrFlow"]);
         evento.IdEstadoDsd.DescrEstado = Convert.ToString(dr[i]["DescrEstadoDsd"]);
         evento.IdEstadoHst.DescrEstado = Convert.ToString(dr[i]["DescrEstadoHst"]);
         Hasta.WF.EventosPosibles.Add(evento);
     }
     dr = ds.Tables[6].Select("IdLote = " + Convert.ToInt32(Hasta.IdLote));
     Hasta.WF.EventosXLotePosibles = new List<CedEntidades.Evento>();
     for (int i = 0; i < dr.Length; i++)
     {
         CedEntidades.Evento evento = new CedEntidades.Evento();
         evento.Flow.IdFlow = Convert.ToString(dr[i]["IdFlow"]);
         evento.Id = Convert.ToString(dr[i]["IdEvento"]);
         evento.Descr = Convert.ToString(dr[i]["DescrEvento"]);
         evento.TextoAccion = Convert.ToString(dr[i]["TextoAccion"]);
         evento.IdEstadoDsd.IdEstado = Convert.ToString(dr[i]["IdEstadoDsd"]);
         evento.IdEstadoHst.IdEstado = Convert.ToString(dr[i]["IdEstadoHst"]);
         evento.Automatico = Convert.ToBoolean(dr[i]["Automatico"]);
         evento.CXO = Convert.ToBoolean(dr[i]["CXO"]);
         evento.XLote = Convert.ToBoolean(dr[i]["XLote"]);
         evento.Flow.DescrFlow = Convert.ToString(dr[i]["DescrFlow"]);
         evento.IdEstadoDsd.DescrEstado = Convert.ToString(dr[i]["DescrEstadoDsd"]);
         evento.IdEstadoHst.DescrEstado = Convert.ToString(dr[i]["DescrEstadoHst"]);
         Hasta.WF.EventosXLotePosibles.Add(evento);
     }
 }
コード例 #3
0
ファイル: Archivo.cs プロジェクト: pjeconde/eFact
        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("&", "&amp;");
                            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;
        }