private FactSAP validarFactura(FactSAP oFact)
 {
     oEmpFactSAP = (EmpFactSAP)htEmpEnlaceSAP[oFact.cod_empresa]; //cod_empresa --> código externo
     if (oEmpFactSAP != null)
     {
         oFact.iCodEmpresa = oEmpFactSAP.t313_idempresa;
         //oFact.ute = oEmpFactSAP.t313_ute;
     }
     oCliFactSAP = (CliFactSAP)htCliEnlaceSAP[oFact.cod_cliente];
     if (oCliFactSAP != null)
     {
         oFact.grupo       = oCliFactSAP.t302_interno;
         oFact.iCodCliente = oCliFactSAP.t302_idcliente;
     }
     oProyFactSAP = (ProyFactSAP)htProyEnlaceSAP[int.Parse(oFact.num_proyecto)];
     if (oProyFactSAP != null)
     {
         oFact.iNumProyecto           = oProyFactSAP.t301_idproyecto;
         oFact.t305_idproyectosubnodo = oProyFactSAP.t305_idproyectosubnodo;
     }
     if (Utilidades.isNumeric(oFact.numero))
     {
         oFact.iNumero = System.Convert.ToInt32(oFact.numero);
     }
     else
     {
         oFact.iNumero = -1;
     }
     if (Utilidades.isNumeric(oFact.num_proyecto))
     {
         oFact.iNumProyecto = System.Convert.ToInt32(oFact.num_proyecto);
     }
     if (Utilidades.isNumeric(oFact.imp_fact))
     {
         oFact.dImpFfact = System.Convert.ToDecimal(oFact.imp_fact);
     }
     if (Utilidades.isNumeric(oFact.fec_fact) && oFact.fec_fact.Length == 8)
     {
         sAux = oFact.fec_fact.Substring(0, 2) + "/" + oFact.fec_fact.Substring(2, 2) + "/" + oFact.fec_fact.Substring(4, 4);
         if (Utilidades.isDate(sAux))
         {
             oFact.dtFecFact = System.Convert.ToDateTime(sAux);
         }
     }
     //if (oFact.serie.Length == 5)
     //{
     //    oFact.serie = oFact.serie.Substring(0, 1) + "." + oFact.serie.Substring(1, 2) + "." + oFact.serie.Substring(3, 2);
     //}
     return(oFact);
 }
    private void Validar(HttpPostedFile selectedFile)
    {
        //StringBuilder sbF = new StringBuilder();
        try
        {
            #region Obtenión de dataset con empresas, proyectos y clientes y creación de HASTABLES
            DataSet ds = INTERFACTSAP.EmpresasProyectos();
            oEmpFactSAP    = null;
            oProyFactSAP   = null;
            oCliFactSAP    = null;
            htEmpEnlaceSAP = new Hashtable();
            foreach (DataRow oEmpresa in ds.Tables[0].Rows)//Recorro tabla de empresas
            {
                try
                {
                    htEmpEnlaceSAP.Add(oEmpresa["t302_codigoexterno"].ToString(), new EmpFactSAP((int)oEmpresa["t313_idempresa"],
                                                                                                 oEmpresa["t313_denominacion"].ToString(),
                                                                                                 oEmpresa["t302_codigoexterno"].ToString()
                                                                                                 //,(bool)oEmpresa["t313_ute"]
                                                                                                 )
                                       );
                }
                catch (Exception ex)
                {
                    sErrores = Errores.mostrarError("Error al existir en la tabla 'T313_EMPRESA' diferentes empresas con el mismo código externo ", ex);
                };
            }
            //oEmpFactSAP = (EmpFactSAP)htEmpEnlaceSAP["IB01"];

            htProyEnlaceSAP = new Hashtable();
            foreach (DataRow oProy in ds.Tables[1].Rows)//Recorro tabla de proyectos
            {
                htProyEnlaceSAP.Add((int)oProy["t301_idproyecto"], new ProyFactSAP((int)oProy["t301_idproyecto"],
                                                                                   (int)oProy["t305_idproyectosubnodo"]));
            }
            //oProyFactSAP = (ProyFactSAP)htProyEnlaceSAP[20801];

            htCliEnlaceSAP = new Hashtable();
            foreach (DataRow oCliente in ds.Tables[2].Rows)//Recorro tabla de clientes
            {
                try
                {
                    htCliEnlaceSAP.Add(oCliente["t302_codigoexterno"], new CliFactSAP((int)oCliente["t302_idcliente"],
                                                                                      oCliente["t302_codigoexterno"].ToString(),
                                                                                      ((int)oCliente["Interno"] == 1)? true : false)
                                       );
                }
                catch (Exception ex)
                {
                    sErrores = Errores.mostrarError("Error al existir en la tabla 'T302_CLIENTE' diferentes clientes con el mismo código externo ", ex);
                };
            }
            //oCliFactSAP = (CliFactSAP)htCliEnlaceSAP[45946];

            ds.Dispose();
            #endregion

            if (selectedFile.ContentLength != 0)
            {
                string sFichero = selectedFile.FileName;
                //Grabo el archivo en base de datos
                byte[] ArchivoEnBinario = new Byte[0];
                ArchivoEnBinario = new Byte[selectedFile.ContentLength];                        //Crear el array de bytes con la longitud del archivo
                selectedFile.InputStream.Read(ArchivoEnBinario, 0, selectedFile.ContentLength); //Forzar al control del archivo a cargar los datos en el array

                int iRows = FICHEROSMANIOBRA.Update(null, Constantes.FicheroFacturasSAP, "Fichero origen de INTERFACTSAP", ArchivoEnBinario);
                if (iRows == 0)
                {
                    sErrores = "No existe entrada asociada a este proceso en el fichero de Maniobra";
                    return;
                }

                selectedFile.InputStream.Position = 0;
                StreamReader r     = new StreamReader(selectedFile.InputStream, System.Text.Encoding.UTF7);
                FactSAP      oFact = null;
                while (r.Peek() > -1)
                {
                    iCont++;
                    //if (iCont==909)
                    //{
                    //    string sAux = "KK";
                    //}
                    //lin = r.ReadLine();
                    //oFact = FactSAP.getFactura(lin);
                    oFact = validarFactura(FactSAP.getFactura(r.ReadLine()));
                    if (!validarCampos(oFact, this.txtAnioMes.Text, true))
                    {
                        continue;
                    }

                    iNumOk++;
                }
            }
            this.divB.InnerHtml    = cabErrores() + sbE + "</table>";
            cldFacProc.InnerText   = iCont.ToString("#,##0");
            cldFacOK.InnerText     = iNumOk.ToString("#,##0");
            cldFacErr.InnerText    = (iCont - iNumOk).ToString("#,##0");
            this.hdnIniciado.Value = "T";
        }
        catch (Exception ex)
        {
            sErrores = Errores.mostrarError("El fichero no tiene el formato requerido para el proceso.\nRevisa la línea " + iCont.ToString(), ex);
        }
    }
Beispiel #3
0
    private void CargarFacturas()
    {
        StringBuilder sb = new StringBuilder();

        sb.Append("<table id='tblErrores' style='WIDTH: 680px;'>");
        sb.Append("<colgroup><col style='width:60px' /><col style='width:40px' /><col style='width:60px;' /><col style='width:520px;' /></colgroup>");

        #region Obtenión de dataset con empresas, proyectos y clientes y creación de HASTABLES
        DataSet ds = INTERFACTSAP.EmpresasProyectos();
        oEmpFactSAP  = null;
        oProyFactSAP = null;
        oCliFactSAP  = null;

        htEmpEnlaceSAP = new Hashtable();
        foreach (DataRow oEmpresa in ds.Tables[0].Rows)//Recorro tabla de empresas
        {
            htEmpEnlaceSAP.Add(oEmpresa["t302_codigoexterno"].ToString(), new EmpFactSAP((int)oEmpresa["t313_idempresa"],
                                                                                         oEmpresa["t313_denominacion"].ToString(),
                                                                                         oEmpresa["t302_codigoexterno"].ToString()
                                                                                         //,(bool)oEmpresa["t313_ute"]
                                                                                         )
                               );
        }
        //oEmpFactSAP = (EmpFactSAP)htEmpEnlaceSAP["IB01"];

        htProyEnlaceSAP = new Hashtable();
        foreach (DataRow oProy in ds.Tables[1].Rows)//Recorro tabla de empresas
        {
            htProyEnlaceSAP.Add((int)oProy["t301_idproyecto"], new ProyFactSAP((int)oProy["t301_idproyecto"],
                                                                               (int)oProy["t305_idproyectosubnodo"])
                                );
        }
        //oProyFactSAP = (ProyFactSAP)htProyEnlaceSAP[20801];

        htCliEnlaceSAP = new Hashtable();
        foreach (DataRow oCliente in ds.Tables[2].Rows)//Recorro tabla de clientes
        {
            htCliEnlaceSAP.Add(oCliente["t302_codigoexterno"], new CliFactSAP((int)oCliente["t302_idcliente"],
                                                                              oCliente["t302_codigoexterno"].ToString(),
                                                                              ((int)oCliente["Interno"] == 1) ? true : false)
                               );
        }
        //oCliFactSAP = (CliFactSAP)htCliEnlaceSAP[45946];

        ds.Dispose();
        #endregion

        SqlDataReader dr = INTERFACTSAP.Catalogo();
        while (dr.Read())
        {
            if (iCont == 0)
            {
                sAnomes            = Fechas.FechaAAnnomes((DateTime)dr["t445_fec_fact"]).ToString();
                cldFecha.InnerText = Fechas.AnnomesAFechaDescLarga(int.Parse(sAnomes));
            }
            iCont++;
            if (validarCampos(dr, sAnomes, true))
            {
                iNumOk++;
            }
            if (sFechaFacIncorrecta == "true")
            {
                sbE.Length         = 0;
                iCont              = 0;
                iNumOk             = 0;
                cldFecha.InnerText = "Fecha indefinida";
                break;
            }
        }
        dr.Close();
        dr.Dispose();

        sb.Append("</table>");
        this.divB.InnerHtml   = cabErrores() + sbE + "</table>";
        cldTotalFac.InnerText = INTERFACTSAP.numFacturas(null).ToString("#,##0");
        cldFacOK.InnerText    = iNumOk.ToString("#,##0");
        cldFacErr.InnerText   = (iCont - iNumOk).ToString("#,##0");
    }