Example #1
0
        public void ActualizarFirmaElectronica(ControlSobres control)
        {
            Recordset recSet   = null;
            string    consulta = "";

            try
            {
                //Obtener objeto de recordset
                recSet = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.BoRecordset);

                //Establecer consulta
                consulta = "Update [@TFECFE] set U_FechaFirma = GETDATE()  where U_TipoDoc = '" + control.Tipo + "' AND U_Serie ='" +
                           control.Serie + "' AND U_NumCFE = '" + control.Numero + "'";

                //Ejectura consulta
                recSet.DoQuery(consulta);
            }
            catch (Exception)
            {
            }
            finally
            {
                if (recSet != null)
                {
                    //Se libera el objeto de memoria
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(recSet);
                    System.GC.Collect();
                }
            }
        }
Example #2
0
        /// <summary>
        /// Inicia el proceso de
        /// </summary>
        /// <param name="parametros"></param>
        public void Trabajar(object parametros)
        {
            ControlSobres controlSobre = new ControlSobres();

            try
            {
                string respuesta = Consumir(parametros, out controlSobre, SuperUsuario());

                if (!respuesta.Equals(""))
                {
                    ProcesarRespuesta(respuesta, parametros, controlSobre);
                }
            }
            catch (Exception)
            {
            }

            finally
            {
                if (controlSobre != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(controlSobre);
                    GC.Collect();
                }
            }
        }
Example #3
0
        /// <summary>
        /// Actualiza el estado de los sobres
        /// </summary>
        /// <param name="control"></param>
        /// <returns></returns>
        public bool Actualizar(ControlSobres control)
        {
            bool resultado = false;

            GeneralService    servicioGeneral = null;
            GeneralData       dataGeneral     = null;
            GeneralDataParams parametros      = null;

            try
            {
                //Obtener servicio general de la compañia
                servicioGeneral = ProcConexion.Comp.GetCompanyService().GetGeneralService("TTFECONSOB");

                //Obtener lista de parametros
                parametros = servicioGeneral.GetDataInterface(GeneralServiceDataInterfaces.gsGeneralDataParams);

                //Establecer parametros
                parametros.SetProperty("DocEntry", control.DocEntry);

                //Apuntar al udo que corresponde con los parametros
                dataGeneral = servicioGeneral.GetByParams(parametros);
                dataGeneral.SetProperty("U_Estado", control.Estado);

                //Agregar el nuevo registro a la base de datos mediante el servicio general
                servicioGeneral.Update(dataGeneral);

                resultado = true;
            }
            catch (Exception ex)
            {
                SAPbouiCOM.Framework.Application.SBO_Application.MessageBox(ex.ToString());
            }
            finally
            {
                if (parametros != null)
                {
                    //Liberar memoria utlizada por el objeto parametros
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(parametros);
                    System.GC.Collect();
                }
                if (dataGeneral != null)
                {
                    //Liberar memoria utlizada por el objeto dataGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(dataGeneral);
                    System.GC.Collect();
                }
                if (servicioGeneral != null)
                {
                    //Liberar memoria utlizada por el objeto servicioGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(servicioGeneral);
                    System.GC.Collect();
                }
            }
            return(resultado);
        }
Example #4
0
        /// <summary>
        /// Obtiene le docEntry de un sobre
        /// </summary>
        /// <param name="control"></param>
        /// <returns></returns>
        public ControlSobres ObtenerDocEntry(ControlSobres control)
        {
            Recordset recSet   = null;
            string    consulta = "";

            try
            {
                //Obtener objeto de recordset
                recSet = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.BoRecordset);

                JobEnvioSobreMasivo Usuario = new JobEnvioSobreMasivo();


                //Establecer consulta
                if (Usuario.SuperUsuario())
                {
                    consulta = "SELECT DocEntry FROM [@TFECONSOB] WHERE U_Tipo = '" + control.Tipo + "' AND U_Serie ='" +
                               control.Serie + "' AND U_Numero = '" + control.Numero + "'";
                }
                else
                {
                    consulta = "SELECT DocEntry FROM [@TFECONSOB] WHERE U_Tipo = '" + control.Tipo + "' AND U_Serie ='" +
                               control.Serie + "' AND U_Numero = '" + control.Numero + "' AND U_Usuario = '" + control.UsuarioSap + "'";
                }



                //Ejectura consulta
                recSet.DoQuery(consulta);

                //Posicionar cursor al inicio
                recSet.MoveFirst();

                //Validar que existan valores
                if (recSet.RecordCount > 0)
                {
                    control.DocEntry = recSet.Fields.Item("DocEntry").Value + "";
                }
            }
            catch (Exception)
            {
            }
            finally
            {
                if (recSet != null)
                {
                    //Se libera el objeto de memoria
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(recSet);
                    System.GC.Collect();
                }
            }
            return(control);
        }
Example #5
0
        /// <summary>
        /// Almacena los sobres
        /// </summary>
        /// <param name="controlSobres"></param>
        /// <returns></returns>
        public bool Almacenar(ControlSobres controlSobres)
        {
            bool resultado = false;

            GeneralService servicioGeneral = null;
            GeneralData    dataGeneral     = null;

            try
            {
                //Obtener el servicio de la compañia
                servicioGeneral = ProcConexion.Comp.GetCompanyService().GetGeneralService("TTFECONSOB");

                //Apuntar a la cabecera del UDO
                dataGeneral = servicioGeneral.GetDataInterface(GeneralServiceDataInterfaces.gsGeneralData);

                //Asiganar valor a cada una de la propiedades del udo
                dataGeneral.SetProperty("U_Tipo", controlSobres.Tipo);
                dataGeneral.SetProperty("U_Serie", controlSobres.Serie);
                dataGeneral.SetProperty("U_Numero", controlSobres.Numero);
                dataGeneral.SetProperty("U_Estado", controlSobres.Estado);
                dataGeneral.SetProperty("U_Usuario", controlSobres.UsuarioSap);
                dataGeneral.SetProperty("U_DocSap", controlSobres.DocumentoSap);

                //Agregar el nuevo registro a la base de datos mediante el servicio general
                servicioGeneral.Add(dataGeneral);

                resultado = true;
            }
            catch (Exception ex)
            {
                SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("ERROR: Almacenar Envio DGI/ " + ex.ToString());
            }
            finally
            {
                if (dataGeneral != null)
                {
                    //Liberar memoria utlizada por dataGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(dataGeneral);
                    System.GC.Collect();
                }
                if (servicioGeneral != null)
                {
                    //Liberar memoria utlizada por servicioGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(servicioGeneral);
                    System.GC.Collect();
                }
            }
            return(resultado);
        }
Example #6
0
        /// <summary>
        /// Inicia el proceso de
        /// </summary>
        /// <param name="parametros"></param>
        public void Trabajar(object parametros)
        {
            string respuesta = Consumir(parametros);

            if (!respuesta.Equals(""))
            {
                ProcesarRespuesta(respuesta, parametros);
            }
            else
            {
                ManteUdoControlSobres manteUdoControlSobres = new ManteUdoControlSobres();
                ParametrosJobWsDGI    parametrosDGI         = parametros as ParametrosJobWsDGI;

                ControlSobres controlSobres = new ControlSobres();
                controlSobres.Estado       = "Pendiente";
                controlSobres.Serie        = parametrosDGI.Cfe.SerieComprobante;
                controlSobres.Numero       = parametrosDGI.Cfe.NumeroComprobante.ToString();
                controlSobres.Tipo         = parametrosDGI.Cfe.TipoCFEInt.ToString();
                controlSobres.DocumentoSap = parametrosDGI.Cfe.DocumentoSAP;
                controlSobres.UsuarioSap   = ProcConexion.Comp.UserName;

                manteUdoControlSobres.Almacenar(controlSobres);
            }
        }
Example #7
0
        /// <summary>
        /// Procesa la respuesta del web service de DGI
        /// </summary>
        /// <param name="xmlRespuesta"></param>
        /// <param name="parametros"></param>
        public void ProcesarRespuesta(string xmlRespuesta, object parametros)
        {
            string             estadoRespuesta = "", token = "", idReceptor = "";
            ParametrosJobWsDGI parametrosJob = parametros as ParametrosJobWsDGI;

            XmlDocument   xmlDocumento = new XmlDocument();
            ManteUdoSobre manteSobre   = new ManteUdoSobre();

            try
            {
                xmlDocumento.LoadXml(xmlRespuesta);


                idReceptor      = xmlDocumento.GetElementsByTagName("IDReceptor").Item(0).InnerText;
                estadoRespuesta = xmlDocumento.GetElementsByTagName("Estado").Item(0).InnerText;

                if (estadoRespuesta.Equals("AS"))
                {
                    token = xmlDocumento.GetElementsByTagName("Token").Item(0).InnerText;
                    string hora = xmlDocumento.GetElementsByTagName("Fechahora").Item(0).InnerText;

                    SobreTransito sobreTransito = new SobreTransito();
                    sobreTransito.NombreSobre  = parametrosJob.Sobre.Nombre;
                    sobreTransito.Token        = token;
                    sobreTransito.IdReceptor   = idReceptor;
                    sobreTransito.TipoReceptor = SobreTransito.ETipoReceptor.DGI;
                    sobreTransito.Tipo         = parametrosJob.Cfe.TipoCFEInt;
                    sobreTransito.Serie        = parametrosJob.Cfe.SerieComprobante;
                    sobreTransito.Numero       = parametrosJob.Cfe.NumeroComprobante;

                    ManteUdoSobreTransito manteTransito = new ManteUdoSobreTransito();
                    manteTransito.Almacenar(sobreTransito);


                    //True = AS, no se agrega detalle correspondiente a info de rechazo
                    manteSobre.cargarSobreXml(xmlDocumento, parametrosJob.Sobre.Nombre, true);

                    //Se crea el documento Pdf
                    //CrearPDF(parametrosJob.Cfe, parametrosJob.Cae);
                }
                else if (estadoRespuesta.Equals("BS"))
                {
                    //False = BS, se agrega detalle correspondiente a info de rechazo
                    manteSobre.cargarSobreXml(xmlDocumento, parametrosJob.Sobre.Nombre, false);
                }
            }
            catch (Exception)
            {
                app.MessageBox("No se pudo enviar a DGI por problemas de conexión, recordar reenvio de documento.");
                ManteUdoControlSobres manteUdoControlSobres = new ManteUdoControlSobres();
                ParametrosJobWsDGI    parametrosDGI         = parametros as ParametrosJobWsDGI;

                ControlSobres controlSobres = new ControlSobres();
                controlSobres.Estado       = "Pendiente";
                controlSobres.Serie        = parametrosDGI.Cfe.SerieComprobante;
                controlSobres.Numero       = parametrosDGI.Cfe.NumeroComprobante.ToString();
                controlSobres.Tipo         = parametrosDGI.Cfe.TipoCFEInt.ToString();
                controlSobres.DocumentoSap = parametrosDGI.Cfe.DocumentoSAP;
                controlSobres.UsuarioSap   = ProcConexion.Comp.UserName;

                manteUdoControlSobres.Almacenar(controlSobres);
                //app.MessageBox("ERROR RESPUESTA: " + ex.ToString());
            }

            finally
            {
                if (xmlDocumento != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(xmlDocumento);
                    GC.Collect();
                }

                if (xmlDocumento != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(xmlDocumento);
                    GC.Collect();
                }

                if (manteSobre != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(manteSobre);
                    GC.Collect();
                }
            }
        }
Example #8
0
        /// <summary>
        /// Procesa la respuesta del web service de DGI
        /// </summary>
        /// <param name="xmlRespuesta"></param>
        /// <param name="parametros"></param>
        public void ProcesarRespuesta(string xmlRespuesta, object parametros, ControlSobres controlSobres)
        {
            string estadoRespuesta = "", token = "", idReceptor = "";
            ParametrosJobWsDGIMasivo parametrosJob         = parametros as ParametrosJobWsDGIMasivo;
            ManteUdoControlSobres    manteUdoControlSobres = new ManteUdoControlSobres();
            ManteUdoCFE manteUdoCfe = new ManteUdoCFE();

            try
            {
                XmlDocument xmlDocumento = new XmlDocument();
                xmlDocumento.LoadXml(xmlRespuesta);

                idReceptor      = xmlDocumento.GetElementsByTagName("IDReceptor").Item(0).InnerText;
                estadoRespuesta = xmlDocumento.GetElementsByTagName("Estado").Item(0).InnerText;

                if (estadoRespuesta.Equals("AS"))
                {
                    manteUdoControlSobres.Eliminar(controlSobres);
                    token = xmlDocumento.GetElementsByTagName("Token").Item(0).InnerText;
                    string hora = xmlDocumento.GetElementsByTagName("Fechahora").Item(0).InnerText;

                    SobreTransito sobreTransito = new SobreTransito();
                    sobreTransito.NombreSobre  = parametrosJob.NombreSobre;
                    sobreTransito.Token        = token;
                    sobreTransito.IdReceptor   = idReceptor;
                    sobreTransito.TipoReceptor = SobreTransito.ETipoReceptor.DGI;

                    sobreTransito.Serie  = parametrosJob.Serie;
                    sobreTransito.Numero = parametrosJob.Numero;
                    sobreTransito.Tipo   = parametrosJob.Tipo;


                    ManteUdoSobreTransito manteTransito = new ManteUdoSobreTransito();
                    manteTransito.Almacenar(sobreTransito);

                    ManteUdoSobre manteSobre = new ManteUdoSobre();
                    //True = AS, no se agrega detalle correspondiente a info de rechazo
                    manteSobre.cargarSobreXml(xmlDocumento, parametrosJob.NombreSobre, true);
                }
                else if (estadoRespuesta.Equals("BS"))
                {
                    manteUdoControlSobres.Eliminar(controlSobres);
                    ManteUdoSobre manteSobre = new ManteUdoSobre();
                    //False = BS, se agrega detalle correspondiente a info de rechazo
                    manteSobre.cargarSobreXml(xmlDocumento, parametrosJob.NombreSobre, false);
                }
            }
            catch (Exception)
            {
                controlSobres.Estado = "Pendiente";
                manteUdoControlSobres.Actualizar(controlSobres);
                app.MessageBox("No se pudo enviar a DGI");
            }

            finally
            {
                if (parametrosJob != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(parametrosJob);
                    GC.Collect();
                }

                if (manteUdoControlSobres != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(manteUdoControlSobres);
                    GC.Collect();
                }


                if (manteUdoCfe != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(manteUdoCfe);
                    GC.Collect();
                }
            }
        }
Example #9
0
        /// <summary>
        /// Consume el web service
        /// </summary>
        /// <param name="parametros"></param>
        /// <returns></returns>
        public string Consumir(object parametros, out ControlSobres controlSobres, Boolean SuperUser)
        {
            string respuesta = "";

            WebServiceDGIMasivo      webServiceDgi            = new WebServiceDGIMasivo(parametros);
            ParametrosJobWsDGIMasivo parametrosJobWsDGIMasivo = parametros as ParametrosJobWsDGIMasivo;

            XmlDocument           xmlDocumento          = new XmlDocument();
            ManteUdoControlSobres manteUdoControlSobres = new ManteUdoControlSobres();

            controlSobres = new ControlSobres();

            try
            {
                if (SuperUser)
                {
                    FTP ftp = new FTP();


                    if (ftp.descargarArchivos(parametrosJobWsDGIMasivo.NombreSobre + ".xml", RutasCarpetas.RutaCarpetaSobresDgi, 0))
                    {
                    }
                    else if (ftp.descargarArchivos(parametrosJobWsDGIMasivo.NombreSobre + ".xml", RutasCarpetas.RutaCarpetaContingenciaSobresDgi, 5))
                    {
                    }
                }

                if (File.Exists((RutasCarpetas.RutaCarpetaSobresDgi + "\\" + parametrosJobWsDGIMasivo.NombreSobre + ".xml")))
                {
                    xmlDocumento.Load(RutasCarpetas.RutaCarpetaSobresDgi + "\\" + parametrosJobWsDGIMasivo.NombreSobre + ".xml");
                }
                else if (File.Exists((RutasCarpetas.RutaCarpetaContingenciaSobresDgi + "\\" + parametrosJobWsDGIMasivo.NombreSobre + ".xml")))
                {
                    xmlDocumento.Load(RutasCarpetas.RutaCarpetaContingenciaSobresDgi + "\\" + parametrosJobWsDGIMasivo.NombreSobre + ".xml");
                }



                controlSobres.Tipo       = parametrosJobWsDGIMasivo.Tipo + "";
                controlSobres.Serie      = parametrosJobWsDGIMasivo.Serie;
                controlSobres.Numero     = parametrosJobWsDGIMasivo.Numero + "";
                controlSobres.Estado     = "Enviado";
                controlSobres.UsuarioSap = ProcConexion.Comp.UserName;
                controlSobres            = manteUdoControlSobres.ObtenerDocEntry(controlSobres);
                manteUdoControlSobres.Actualizar(controlSobres);
                manteUdoControlSobres.ActualizarFirmaElectronica(controlSobres);


                // RE firmo el documento con la fecha del Envio
                FirmaDigital firma = new FirmaDigital();
                xmlDocumento = firma.refirmarDocumentos(xmlDocumento);


                // Envio el documento re firmado.
                respuesta = webServiceDgi.WSDGI.SendWSDGI(xmlDocumento.InnerXml, clsWSDGI.WsMethod.Envelope);

                if (!respuesta.Equals(""))
                {
                    respuesta = respuesta.Replace("<IDEmisor>0</IDEmisor>", "<IDEmisor>" + xmlDocumento.GetElementsByTagName("DGICFE:Idemisor").Item(0).InnerText + "</IDEmisor>");
                    //manteUdoControlSobres.Eliminar(controlSobres);
                }
            }
            catch (Exception)
            {
                if (controlSobres.Tipo != "" && controlSobres.Numero != "0" && controlSobres.Serie != "")
                {
                    controlSobres.Estado = "Pendiente";
                }

                else
                {
                    controlSobres.Estado = "NoAplica";
                }

                manteUdoControlSobres.Actualizar(controlSobres);
                respuesta = "";
            }

            finally
            {
                if (webServiceDgi != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(webServiceDgi);
                    GC.Collect();
                }


                if (parametrosJobWsDGIMasivo != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(parametrosJobWsDGIMasivo);
                    GC.Collect();
                }

                if (xmlDocumento != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(xmlDocumento);
                    GC.Collect();
                }

                if (manteUdoControlSobres != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(manteUdoControlSobres);
                    GC.Collect();
                }


                if (controlSobres != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(controlSobres);
                    GC.Collect();
                }
            }

            return(respuesta);
        }