예제 #1
0
파일: SunatFE.cs 프로젝트: slotcore/ssf-net
        string[,] LlenarArrayAtributos(int n_idNodo, DataTable dtAtributos)
        {
            int n_row = 0;

            string[,] arrAtributos = new string[1, 1];

            Helper.Genericas funGen   = new Helper.Genericas();
            DataTable        dtResult = new DataTable();

            dtResult = funGen.DataTableFiltrar(dtAtributos, "n_idnoddoc = " + n_idNodo.ToString() + "");

            if (dtResult.Rows.Count != 0)
            {
                string[,] arrAtributos2 = new string[2, dtResult.Rows.Count];

                for (n_row = 0; n_row <= dtResult.Rows.Count - 1; n_row++)
                {
                    arrAtributos2[0, n_row] = dtResult.Rows[n_row]["c_nom"].ToString();
                    arrAtributos2[1, n_row] = dtResult.Rows[n_row]["c_valor"].ToString();
                }
                arrAtributos = arrAtributos2;
            }

            return(arrAtributos);
        }
예제 #2
0
파일: SunatFE.cs 프로젝트: slotcore/ssf-net
        public XmlDocument GenerarDocumento()
        {
            Helper.DatosMySql fudDat = new Helper.DatosMySql();
            Helper.Genericas  funGen = new Helper.Genericas();
            int n_row = 0;

            string[,] arrAtributoNodo = new string[1, 2] {
                { "n_iddoc", "System.INT64" }
            };

            string[,] arrParametros = new string[1, 3] {
                { "n_iddoc", "System.INT64", "1" }
            };

            dtDocOrig   = fudDat.StoreDTLLenar("sun_docelectronicos_consulta1", arrParametros, MyConeccion);
            dtDocumento = funGen.DataTableFiltrar(dtDocOrig, "n_id <= 74");
            dtDocItem   = funGen.DataTableFiltrar(dtDocOrig, "n_id >= 75");
            dtAtributos = fudDat.StoreDTLLenar("sun_docelectronicosatri_consulta1", arrParametros, MyConeccion);

            XmlElement objNodoPadre;

            Helper.XML_funciones FunXml = new Helper.XML_funciones();
            string[,] arrAtributo = new string[10, 2] {
                { "xmlns", "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" },
                { "xmlns:cac", "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" },
                { "xmlns:cbc", "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" },
                { "xmlns:ccts", "urn:un:unece:uncefact:documentation:2" },
                { "xmlns:ds", "http://www.w3.org/2000/09/xmldsig#" },
                { "xmlns:ext", "urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" },
                { "xmlns:qdt", "urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" },
                { "xmlns:sac", "urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1" },
                { "xmlns:udt", "urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" },
                { "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance" }
            };


            FunXml.DocAtributos = arrAtributo;         // CARGAMOS LOS ATRIBUTOS DEL DOCUMENTO
            FunXml.DocXml       = DocXml;              // PASAMOS LA VARIABLE XML
            DocXml       = FunXml.CrearXML("Invoice"); // CREAMOS EL DOCUMENTO XML INDICANDO EL NOMBRE DE LA RAIZ
            objNodoPadre = FunXml.NodoPadre;
            CargarFE();
            AgregarNodo(1, dtDocumento, dtAtributos, objNodoPadre, "");

            //AGREGAMOS LOS ITEMS DE LA FACTURA ELECTRONICA
            for (n_row = 0; n_row <= dtDetalleFE.Rows.Count - 1; n_row++)
            {
                AgregarItems(1, dtDocItem, dtAtributos, objNodoPadre, "", n_row);
            }
            string c_tipcom  = "01";
            string c_nomarch = C_CONTRI_RUC + "-" + c_tipcom + "-" + C_CONTRI_NUMSERDOC + "-" + C_CONTRI_NUMCORDOC + ".xml";

            FunXml.GrabarArchivo(DocXml, C_RUTAARCHIVO, c_nomarch);
            return(DocXml);
        }
예제 #3
0
        public DataTable BuscarDocumentoDetraccion(int n_IdEmpresa, int n_IdProveedor)
        {
            string[,] arrCabeceraDg1 = new string[5, 4];
            DataTable dtResult       = new DataTable();
            string    c_CampoBuscar  = "n_id";
            string    c_CadenaFiltro = "";

            Helper.Genericas funDatos = new Helper.Genericas();

            Consulta3(n_IdEmpresa, n_IdProveedor);
            dtResult = dtLista;

            arrCabeceraDg1[0, 0] = "Tipo Doc.";
            arrCabeceraDg1[0, 1] = "50";
            arrCabeceraDg1[0, 2] = "C";
            arrCabeceraDg1[0, 3] = "c_codsun";

            arrCabeceraDg1[1, 0] = "Nº Documento";
            arrCabeceraDg1[1, 1] = "140";
            arrCabeceraDg1[1, 2] = "C";
            arrCabeceraDg1[1, 3] = "c_numdoc";

            arrCabeceraDg1[2, 0] = "Fecha Documento";
            arrCabeceraDg1[2, 1] = "90";
            arrCabeceraDg1[2, 2] = "F";
            arrCabeceraDg1[2, 3] = "d_fchdoc";

            arrCabeceraDg1[3, 0] = "Importe";
            arrCabeceraDg1[3, 1] = "80";
            arrCabeceraDg1[3, 2] = "D";
            arrCabeceraDg1[3, 3] = "n_imptotcom";

            arrCabeceraDg1[4, 0] = "Id";
            arrCabeceraDg1[4, 1] = "0";
            arrCabeceraDg1[4, 2] = "N";
            arrCabeceraDg1[4, 3] = "n_id";

            Helper.Genericas xFun = new Helper.Genericas();
            xFun.Buscar_CampoBusqueda = c_CampoBuscar;
            xFun.Buscar_CadFiltro     = c_CadenaFiltro;
            dtResult = xFun.Buscar(arrCabeceraDg1, dtResult);

            return(dtResult);
        }
예제 #4
0
파일: SunatFE.cs 프로젝트: slotcore/ssf-net
        void AgregarNodo(int n_IdNivel, DataTable dtDocumento, DataTable dtAtributos, XmlElement objNodoAnterior, string c_RutaArbol)
        {
            DataTable dtResul    = new DataTable();
            DataTable dtLista    = new DataTable();
            DataTable dtNodoHijo = new DataTable();

            Helper.Comunes.Funciones Fun    = new Helper.Comunes.Funciones();
            Helper.Genericas         funGen = new Helper.Genericas();
            Helper.XML_funciones     FunXml = new Helper.XML_funciones();
            XmlElement element1;
            int        n_row          = 0;
            string     c_nomlista     = "";
            string     c_texto        = "";
            string     c_arbol        = "";
            string     c_prefi        = "";
            string     c_dirur        = "";
            string     c_valor        = "";
            int        n_tipnod       = 0;
            int        n_eslista      = 0;
            string     c_NewRutaArbol = "";

            string[,] arrAtributo = new string[1, 2] {
                { "n_iddoc", "System.INT64" }
            };

            dtResul = funGen.DataTableFiltrar(dtDocumento, "(n_numniv = " + n_IdNivel.ToString() + ") AND (c_arbol like '" + c_RutaArbol + "*')");              // FILTRAMOS NIVEL 6

            if (dtResul.Rows.Count != 0)
            {
                for (n_row = 0; n_row <= dtResul.Rows.Count - 1; n_row++)
                {
                    element1       = null;
                    c_texto        = dtResul.Rows[n_row]["c_des"].ToString();
                    c_valor        = dtResul.Rows[n_row]["c_valor"].ToString();
                    c_arbol        = dtResul.Rows[n_row]["c_arbol"].ToString();
                    c_prefi        = dtResul.Rows[n_row]["c_prefijo"].ToString();
                    c_dirur        = dtResul.Rows[n_row]["c_dirurl"].ToString();
                    n_tipnod       = Convert.ToInt32(dtResul.Rows[n_row]["n_tipo"]);
                    c_NewRutaArbol = dtResul.Rows[n_row]["c_arbol"].ToString();
                    n_eslista      = Convert.ToInt32(Fun.NulosN(dtResul.Rows[n_row]["n_lista"]));
                    arrAtributo    = LlenarArrayAtributos(Convert.ToInt32(dtResul.Rows[n_row]["n_id"]), dtAtributos);

                    FunXml.DocXml = DocXml;
                    if (n_tipnod == 1)
                    {
                        FunXml.AgregarArchivo(c_texto, c_valor, objNodoAnterior, arrAtributo, c_prefi, c_dirur);
                    }
                    else
                    {
                        FunXml.DocXml = DocXml;

                        // PREGUNTAMOS SI EL NUEVO NODO ES UNA LISTA
                        if (n_eslista == 1)
                        {
                            // SI ES UNA LISTA ESCRIBIMOS LOS DATOS DEL ALISTA
                            c_nomlista = dtResul.Rows[n_row]["c_nomlista"].ToString();
                            int n_fil    = 0;
                            int n_lisfil = 0;

                            dtLista = BucarDatosLista(c_nomlista);     // OBTENEMOS EL DATATABLE CORRECTO PARA ESCRIBIR LOS DATOS

                            string c_cond = "c_arbol like '" + c_arbol + "*' AND n_numniv > " + n_IdNivel.ToString() + " ";
                            dtNodoHijo = funGen.DataTableFiltrar(dtDocumento, c_cond);

                            for (n_lisfil = 0; n_lisfil <= dtLista.Rows.Count - 1; n_lisfil++)
                            {
                                // AGREGAMOS EL NODO PADRE
                                element1 = FunXml.AgregarCarpeta(c_texto, objNodoAnterior, arrAtributo, c_prefi, c_dirur);

                                for (n_fil = 0; n_fil <= dtNodoHijo.Rows.Count - 1; n_fil++)
                                {
                                    string c_textohijo = dtNodoHijo.Rows[n_fil]["c_des"].ToString();
                                    string c_valorhijo = dtNodoHijo.Rows[n_fil]["c_des"].ToString();    // OBTENEMOS EL NOMBRE DEL CAMPO
                                    c_valorhijo = dtLista.Rows[n_lisfil][c_valorhijo].ToString();       // TRAEMOS EL DATO DE LA LISTA
                                    FunXml.AgregarArchivo(c_textohijo, c_valorhijo, element1, arrAtributo, c_prefi, c_dirur);
                                }
                            }
                        }
                        else
                        {
                            element1 = FunXml.AgregarCarpeta(c_texto, objNodoAnterior, arrAtributo, c_prefi, c_dirur);

                            int n_NuevoNivel = n_IdNivel + 1;
                            AgregarNodo(n_NuevoNivel, dtDocumento, dtAtributos, element1, c_NewRutaArbol);
                        }
                    }
                    //int n_NuevoNivel = n_IdNivel + 1;
                    //AgregarNodo(n_NuevoNivel, dtDocumento, dtAtributos, element1, c_NewRutaArbol);
                }
            }
        }