예제 #1
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);
        }
예제 #2
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);
        }
예제 #3
0
        public bool RegeneraAsientos(int n_IdEmpresa, int n_IdMesTrabajo, int n_IdAnoTrabajo, int n_IdLibro, int n_IdTipoCompra)
        {
            DataTable      dtLis    = new DataTable();
            bool           b_result = false;
            int            n_row    = 0;
            int            n_idreg  = 0;
            CD_log_compras miFun    = new CD_log_compras();
            CD_con_diario  o_Conta  = new CD_con_diario();
            CN_con_diario  funCon   = new CN_con_diario();

            // hacer seguimientyo para ver si esta generando bien
            miFun.mysConec   = mysConec;
            o_Conta.mysConec = mysConec;
            b_result         = o_Conta.EliminarLibroMes(n_IdLibro, n_IdAnoTrabajo, n_IdMesTrabajo, n_IdEmpresa);
            if (b_result == true)
            {
                if (miFun.Listar(n_IdEmpresa, n_IdMesTrabajo, n_IdAnoTrabajo, n_IdTipoCompra) == false)
                {
                    b_OcurrioError = miFun.b_ocurrioError;
                    c_ErrorMensaje = miFun.c_ErrorMensaje;
                    n_ErrorNumber  = miFun.n_ErrorNumber;
                    return(b_result);
                }
                dtLis = miFun.dtLista;
                if (n_IdLibro == 8)
                {
                    dtLis = fundatos.DataTableFiltrar(dtLis, "(n_idtipdoc IN(2,4,5,6,11,13,15,16,17,21,38))");
                }
                if (n_IdLibro == 32)
                {
                    dtLis = fundatos.DataTableFiltrar(dtLis, "(n_idtipdoc = 3)");
                }

                dtLis = fundatos.DataTableOrdenar(dtLis, "c_numreg");

                bool b_newasi = false;
                for (n_row = 0; n_row <= dtLis.Rows.Count - 1; n_row++)
                {
                    b_newasi = false;
                    string c_NumAsi = dtLis.Rows[n_row]["c_numreg"].ToString();
                    if (c_NumAsi == "")
                    {
                        b_newasi = true;
                    }
                    n_idreg            = Convert.ToInt32(dtLis.Rows[n_row]["n_id"].ToString());
                    funCon.mysConec    = mysConec;
                    funCon.STU_SISTEMA = STU_SISTEMA;

                    if (n_IdLibro == 8)
                    {
                        funCon.GenerarAsientoCompras(STU_SISTEMA.EMPRESAID, n_idreg, STU_SISTEMA.ANOTRABAJO, STU_SISTEMA.MESTRABAJO, 8, c_NumAsi);
                    }
                    if (n_IdLibro == 32)
                    {
                        funCon.GenerarAsientoCompras(STU_SISTEMA.EMPRESAID, n_idreg, STU_SISTEMA.ANOTRABAJO, STU_SISTEMA.MESTRABAJO, 32, c_NumAsi);
                    }

                    if (b_newasi == true)
                    {
                        c_NumAsi = funCon.c_NewNumAsiento;
                        miFun.AgregarNumAsi(n_idreg, c_NumAsi);
                    }
                }
            }
            b_result = true;
            return(b_result);
        }
예제 #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);
                }
            }
        }