예제 #1
0
        configuracion ObtenerConfiguracionColumna(int pCompaniaId, string pColumna, int pDocumentoid)
        {
            configuracion     conf = new configuracion();
            DataSet           ds   = new DataSet();
            SQLiteCommand     cmd  = new SQLiteCommand(string.Format(@"select id, nombrecolumna, Escatalogo, catalogoid, 
            companiaid, esvalordefecto, valordefecto, escalculado, calculoid from configuracion where companiaid = '{0}' and nombrecolumna= '{1}' and documentoid = {2}", pCompaniaId, pColumna, pDocumentoid), sqliteConexion);
            SQLiteDataAdapter da   = new SQLiteDataAdapter(cmd);

            sqliteConexion.Open();
            da.Fill(ds);
            sqliteConexion.Close();

            if (ds.Tables[0].Rows.Count > 0)
            {
                conf = new configuracion()
                {
                    calculoid      = int.Parse(ds.Tables[0].Rows[0]["calculoid"].ToString()),
                    catalogoid     = int.Parse(ds.Tables[0].Rows[0]["catalogoid"].ToString()),
                    companiaid     = int.Parse(ds.Tables[0].Rows[0]["companiaid"].ToString()),
                    escalculado    = int.Parse(ds.Tables[0].Rows[0]["escalculado"].ToString()),
                    escatalogo     = int.Parse(ds.Tables[0].Rows[0]["Escatalogo"].ToString()),
                    esvalordefecto = int.Parse(ds.Tables[0].Rows[0]["esvalordefecto"].ToString()),
                    id             = int.Parse(ds.Tables[0].Rows[0]["id"].ToString()),
                    nombrecolumna  = ds.Tables[0].Rows[0]["nombrecolumna"].ToString(),
                    valordefecto   = ds.Tables[0].Rows[0]["valordefecto"].ToString()
                };
            }
            return(conf);
        }
예제 #2
0
        string ObtenerValorCatalogo(int CompaniaId, int CatalogoId, string ValorColumna)
        {
            string            valordestino = string.Empty;
            configuracion     conf         = new configuracion();
            DataSet           ds           = new DataSet();
            SQLiteCommand     cmd          = new SQLiteCommand(string.Format(@"select valordestino from detallecatalogo 
            where catalogoid={0} and companiaid ={1} and valororigen='{2}'", CatalogoId, CompaniaId, ValorColumna.Trim()), sqliteConexion);
            SQLiteDataAdapter da           = new SQLiteDataAdapter(cmd);

            sqliteConexion.Open();
            da.Fill(ds);
            sqliteConexion.Close();

            if (ds.Tables[0].Rows.Count > 0)
            {
                valordestino = ds.Tables[0].Rows[0]["valordestino"].ToString();
            }
            return(valordestino);
        }
예제 #3
0
        List <configuracion> ObtenerConfiguracionDocumento(int DocumentoId)
        {
            List <configuracion> lConfiguracionDocumento = new List <configuracion>();

            configuracion conf = new configuracion();
            DataSet       ds   = new DataSet();
            SQLiteCommand cmd  = new SQLiteCommand(
                string.Format(@"SELECT [Id],[NombreColumna],[EsCatalogo],[CatalogoId],
                                [CompaniaId],[EsValorDefecto],[ValorDefecto],[EsCalculado],
                                [CalculoId],[DocumentoId],[Seccion]
                                FROM [Configuracion] where DocumentoId = {0}", DocumentoId), sqliteConexion);
            SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);

            sqliteConexion.Open();
            da.Fill(ds);
            foreach (DataRow item in ds.Tables[0].Rows)
            {
                lConfiguracionDocumento.Add(new configuracion()
                {
                    calculoid      = int.Parse(item["CalculoId"].ToString()),
                    catalogoid     = int.Parse(item["CatalogoId"].ToString()),
                    companiaid     = int.Parse(item["CompaniaId"].ToString()),
                    documentoid    = int.Parse(item["DocumentoId"].ToString()),
                    escalculado    = int.Parse(item["EsCalculado"].ToString()),
                    escatalogo     = int.Parse(item["EsCatalogo"].ToString()),
                    esvalordefecto = int.Parse(item["EsValorDefecto"].ToString()),
                    id             = int.Parse(item["Id"].ToString()),
                    nombrecolumna  = item["NombreColumna"].ToString(),
                    valordefecto   = item["ValorDefecto"].ToString(),
                    verificado     = (int.Parse(item["EsCatalogo"].ToString()) > 0) ? true : false,
                    seccion        = item["Seccion"].ToString()
                });
            }

            sqliteConexion.Close();

            return(lConfiguracionDocumento);
        }
예제 #4
0
        public byte[] Procesar(byte[] bytes, int pDocumentoId)
        {
            byte[] Resultado;
            documentoId = pDocumentoId;
            string NuevoDocumento = string.Empty;

            if (documentoId > 0)
            {
                if (VerificarConexion())
                {
                    string cadena = System.Text.Encoding.UTF8.GetString(bytes, 0, bytes.Length);
                    if (sqliteConexion == null)
                    {
                        throw new Exception("Error inicializando base de datos.");
                    }
                    else
                    {
                        String[]             ColumnasProcesar = ObtenerColumnasProcesar(companiaId, documentoId);
                        List <configuracion> lConfiguracion   = ObtenerConfiguracionDocumento(documentoId);

                        int i = 0;

                        foreach (var item in cadena.Split('\n'))
                        {
                            //Encabezado
                            //verificar si la columna tiene alguna configuracion para hacer reemplazo del valor
                            //o asignacion
                            if (item.Split(';').Length == 4)
                            {
                                if (ColumnasProcesar.Contains(item.Split(';')[1].ToString()))
                                {
                                    configuracion Conf = ObtenerConfiguracionColumna(companiaId, item.Split(';')[1].ToString(), documentoId);
                                    //El reeemplazo es por catalogo
                                    if (Conf.escatalogo > 0)
                                    {
                                        string valorReemplazo = ObtenerValorCatalogo(Conf.companiaid, Conf.catalogoid, item.Split(';')[3]);
                                        NuevoDocumento += item.Split(';')[0] + ";" + item.Split(';')[1] + ";" + item.Split(';')[2] + ";" + valorReemplazo + "\r\n";
                                    }
                                    else
                                    {
                                        //El reemplazo es por valor por defecto
                                        if (Conf.esvalordefecto > 0)
                                        {
                                            NuevoDocumento += item.Split(';')[0] + ";" + item.Split(';')[1] + ";" + item.Split(';')[2] + ";" + Conf.valordefecto + "\r\n";
                                        }
                                        else
                                        {
                                            if (Conf.escalculado > 0)
                                            {
                                                CampoCalculado CampCalc = new CampoCalculado();

                                                switch (Conf.calculoid)
                                                {
                                                case 1:
                                                    string Hora = CampCalc.FechaHoraActual(cadena);
                                                    NuevoDocumento += item.Split(';')[0] + ";" + item.Split(';')[1] + ";" + item.Split(';')[2] + ";" + Hora + "\r\n";

                                                    break;

                                                case 2:
                                                    int CantidadLineas = CampCalc.CantidadDetalle(cadena);
                                                    NuevoDocumento += item.Split(';')[0] + ";" + item.Split(';')[1] + ";" + item.Split(';')[2] + ";" + CantidadLineas.ToString() + "\r\n";
                                                    break;

                                                case 3:
                                                    decimal FactorCargoDescuento = CampCalc.FactorCargoDescuento(cadena);
                                                    NuevoDocumento += item.Split(';')[0] + ";" + item.Split(';')[1] + ";" + item.Split(';')[2] + ";" + FactorCargoDescuento.ToString() + "\r\n";
                                                    break;

                                                default:
                                                    break;
                                                }
                                            }
                                            else
                                            {
                                                NuevoDocumento += item + "\n";
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    NuevoDocumento += item + "\n";
                                }
                            }
                        }

                        string seccionagregar        = string.Empty;
                        string secciondocumento      = string.Empty;
                        string nuevasecciondocumento = string.Empty;

                        string DocumentoResultante = string.Empty;
                        bool   listo = false;
                        foreach (var item in lConfiguracion.Where(p => !p.verificado))
                        {
                            seccionagregar   = item.seccion;
                            listo            = false;
                            secciondocumento = string.Empty;
                            foreach (var item1 in NuevoDocumento.Split('\n'))
                            {
                                if (item1.Split(';')[0] == seccionagregar)
                                {
                                    secciondocumento = item1.Split(';')[0];
                                }
                                if (secciondocumento != string.Empty && item1.Split(';')[0] != secciondocumento && !listo)
                                {
                                    item.verificado = true;
                                    if (item.esvalordefecto > 0)
                                    {
                                        DocumentoResultante += secciondocumento + ";" + item.nombrecolumna + ";;" + item.valordefecto + "\r\n";
                                    }
                                    else
                                    {
                                        if (item.escalculado > 0)
                                        {
                                            CampoCalculado CampCalc = new CampoCalculado();

                                            switch (item.calculoid)
                                            {
                                            case 1:
                                                string Hora = CampCalc.FechaHoraActual(cadena);
                                                DocumentoResultante += secciondocumento + ";" + item.nombrecolumna + ";;" + Hora + "\r\n";

                                                break;

                                            case 2:
                                                int CantidadLineas = CampCalc.CantidadDetalle(cadena);
                                                DocumentoResultante += secciondocumento + ";" + item.nombrecolumna + ";;" + CantidadLineas.ToString() + "\r\n";
                                                break;

                                            case 3:
                                                decimal FactorCargoDescuento = CampCalc.FactorCargoDescuento(cadena);
                                                DocumentoResultante += secciondocumento + ";" + item.nombrecolumna + ";;" + FactorCargoDescuento.ToString() + "\r\n";
                                                break;

                                            default:
                                                break;
                                            }
                                        }
                                        else
                                        {
                                            DocumentoResultante += item + "\n";
                                        }
                                    }
                                    listo = true;
                                }
                                DocumentoResultante += item1 + "\n";
                            }
                            NuevoDocumento      = DocumentoResultante;
                            DocumentoResultante = string.Empty;
                        }
                    }
                }
                else
                {
                    throw new Exception("Base Datos Configuracion no encontrada.");
                }
            }
            else
            {
                throw new Exception("Tipo Documento Id invalido para procesamiento, por favor verifique.");
            }
            Resultado = Encoding.ASCII.GetBytes(NuevoDocumento);
            return(Resultado);
        }