Example #1
0
        public bool isValid(DocumentoModel doc)
        {
            bool valid = true;

            String xmlCaf = String.Empty;
            String cafDir = String.Empty;

            fileAdmin file = new fileAdmin();

            string rut = doc.RUTEmisor;

            try
            {
                switch (doc.TipoDTE)
                {
                case 33: cafDir = @"C:\AdmToSii\cafs\" + rut + @"\factura\";
                    break;

                case 61: cafDir = @"C:\AdmToSii\cafs\" + rut + @"\notacredito\";
                    break;

                case 56: cafDir = @"C:\AdmToSii\cafs\" + rut + @"\notadebito\";
                    break;

                case 52: cafDir = @"C:\AdmToSii\cafs\" + rut + @"\Guia\";
                    break;

                case 34: cafDir = @"C:\AdmToSii\cafs\" + rut + @"\facturaexenta\";
                    break;
                }

                xmlCaf = file.nextFile(cafDir, "*.xml");

                String xml = String.Empty;

                if (xmlCaf != null)
                {
                    StreamReader objReader = new StreamReader(xmlCaf, System.Text.Encoding.Default, true);
                    objReader.ToString();
                    xml = objReader.ReadToEnd();
                }


                int start = xml.IndexOf("<TD") + 4;
                int end   = xml.IndexOf("</TD>");
                int largo = end - start;

                // Valida tipo de documento
                String td = xml.Substring(start, largo);
                if (td != doc.TipoDTE.ToString())
                {
                    valid = false;
                }


                start = xml.IndexOf("<FA>") + 4;
                end   = xml.IndexOf("</FA>");
                largo = end - start;
                // Valida FECHA de documento
                String fch = xml.Substring(start, largo);

                DateTime fchCaf = DateTime.ParseExact(fch, "yyyy-MM-dd",
                                                      System.Globalization.CultureInfo.InvariantCulture);

                DateTime fEmis = DateTime.ParseExact(fch, "yyyy-MM-dd",
                                                     System.Globalization.CultureInfo.InvariantCulture);

                if (fEmis > fchCaf)
                {
                    valid = false;
                }


                start = xml.IndexOf("<D>") + 3;
                end   = xml.IndexOf("</D>");
                largo = end - start;
                String d = xml.Substring(start, largo);

                start = xml.IndexOf("<H>") + 3;
                end   = xml.IndexOf("</H>");
                largo = end - start;
                String h = xml.Substring(start, largo);


                // Valida Folio del documento dentro del rango CAF
                int ds = Convert.ToInt32(d);
                int hs = Convert.ToInt32(h);

                // TO DO: Descomentar esta linea para el proceso de producción
                //    if (!((folio < hs) && (folio >ds)) ) valid = false;


                // OTRAS VALIDACIONES
                if (doc.CiudadRecep == null || doc.CiudadRecep == String.Empty)
                {
                    valid = false;
                }
                if (doc.CmnaRecep == null || doc.CmnaRecep == String.Empty)
                {
                    valid = false;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("The file CAF could not be read:");
                Console.WriteLine(e.Message);
            }


            return(valid);
        }
Example #2
0
        public DocumentoModel lectura(String fileJson, bool moveFile, String dirOrigen)
        {
            DocumentoModel doc      = new DocumentoModel();
            fileAdmin      file     = new fileAdmin();
            String         fileName = String.Empty;

            if (dirOrigen == "")
            {
                dirOrigen = @"C:\AdmToSii\file";
            }


            if (fileJson == "")
            {
                fileName = file.nextFile(dirOrigen, "*.json");
            }
            else
            {
                fileName = dirOrigen + fileJson;
            }


            if (fileName != null)
            {
                StreamReader objReader = new StreamReader(fileName, System.Text.Encoding.Default, true);
                objReader.ToString();
                String data = objReader.ReadToEnd();

                DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(DocumentoModel));

                MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(data));

                try
                {
                    doc = (DocumentoModel)js.ReadObject(ms);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    // MessageBox.Show("Error de lectura JSON"+ e.Message);
                }

                // Datos del Emisor
                // Cargo datos en laclase Documento desde sqlite
                string oc = bd.GetOC();
                if (oc == "True")
                {
                    doc.NroOrdenCompra = Convert.ToInt32(getOrdenCompra(data));
                    doc.NroCita        = getNroCita(data);
                    doc.Sello          = getSello(data);
                }


                if (doc.RUTEmisor == null)
                {
                    try
                    {
                        SQLiteConnection myConn = bd.ConnectSqlite();
                        myConn.Open();

                        string           sql     = "select * from empresa";
                        SQLiteCommand    command = new SQLiteCommand(sql, myConn);
                        SQLiteDataReader reader  = command.ExecuteReader();
                        while (reader.Read())
                        {
                            doc.RUTEmisor         = reader["RutEmisor"].ToString();
                            doc.RznSoc            = reader["RznSoc"].ToString();
                            doc.GiroEmis          = reader["GiroEmis"].ToString();
                            doc.Telefono          = reader["Telefono"].ToString();
                            doc.CorreoEmisor      = reader["CorreoEmisor"].ToString();
                            doc.Acteco            = Convert.ToInt32(reader["Acteco"]);
                            doc.CdgSIISucur       = Convert.ToInt32(reader["CdgSIISucur"]);
                            doc.DirMatriz         = reader["DirMatriz"].ToString();
                            doc.CmnaOrigen        = reader["CmnaOrigen"].ToString();
                            doc.CiudadOrigen      = reader["CiudadOrigen"].ToString();
                            doc.DirOrigen         = reader["DirOrigen"].ToString();
                            doc.NombreCertificado = reader["NomCertificado"].ToString();
                            doc.SucurEmisor       = reader["SucurEmisor"].ToString();
                            doc.FchResol          = reader["FchResol"].ToString();
                            doc.RutEnvia          = reader["RutCertificado"].ToString();
                            doc.NumResol          = reader["NumResol"].ToString();
                            doc.CondEntrega       = reader["CondEntrega"].ToString();
                        }
                        myConn.Close();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("ERROR: {0}", e.ToString());
                    }
                }
                else
                {
                    try
                    {
                        SQLiteConnection myConn = bd.ConnectSqlite();
                        //myConn.Open();

                        string           sql     = "select * from empresa where empresa.RutEmisor = '" + doc.RUTEmisor.ToString() + "'";
                        SQLiteCommand    command = new SQLiteCommand(sql, myConn);
                        SQLiteDataReader reader  = command.ExecuteReader();
                        while (reader.Read())
                        {
                            doc.Telefono          = reader["Telefono"].ToString();
                            doc.CorreoEmisor      = reader["CorreoEmisor"].ToString();
                            doc.Acteco            = Convert.ToInt32(reader["Acteco"]);
                            doc.DirRegionalSII    = reader["sucurSII"].ToString();
                            doc.DirMatriz         = reader["DirMatriz"].ToString();
                            doc.NombreCertificado = reader["NomCertificado"].ToString();
                            doc.SucurEmisor       = reader["SucurEmisor"].ToString();
                            doc.FchResol          = reader["FchResol"].ToString();
                            doc.RutEnvia          = reader["RutCertificado"].ToString();
                            doc.NumResol          = reader["NumResol"].ToString();
                            doc.CondEntrega       = reader["CondEntrega"].ToString();
                            doc.PrnMtoNeto        = reader["PrnMtoNeto"].ToString();
                            doc.PrnTwoCopy        = reader["PrnTwoCopy"].ToString();
                        }

                        myConn.Close();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("ERROR: {0}", e.ToString());
                    }
                }

                objReader.Close();
                ms.Close();
                if (moveFile)
                {
                    file.mvFile(fileName, dirOrigen, "C:/AdmToSii/fileProcess/");
                }

                CafModel caf = new CafModel();

                if (!caf.isValid(doc))
                {
                    doc = null;
                }

                if (fileJson == "")
                {
                    doc.fileName = fileName;
                }
                else
                {
                    doc.fileName = fileJson;
                }
                return(doc);
            }
            else
            {
                return(null);
            }
        }