/// <summary> /// Funcion de Anulacion de NC segun datos enviados /// </summary> /// <param name="Resol">Resolucion de proveedor a la que pertenece el documento</param> /// <param name="TipoDoc">TipoDoc de documento a anular</param> /// <param name="Serie">Serie del documento a anular</param> /// <param name="DocNo">Correlativo del documento a anular</param> /// <returns>Respuesta de éxito o fallo de anulacion de documento. Ver Variable de mensaje</returns> //Anulacion de NC al proveedor public bool AnularDocNC(string Resol, string TipoDoc, string Serie, string NoNC) { bool resultado = false; string msg = null; //Seteo de variables de negocio this.Resolucion = Resol; this.TipoDoc = TipoDoc; this.SerieDoc = Serie; this.NoDocumento = NoNC; //Seteo de modo de funcion Funcion = Modo.Anulacion; //Carga de Datos CargarDatos(); try { //Obtencion de Clase del proveedor para ejecucion del proceso string provider = utl.convertirString(DocProvider.Rows[0]["ClassName"]); //Seleccion de interface segun clase de proveedor IFacElecInterface inter = ObtenerInterface(provider); //Carga de elementos en la interface inter.DocHeader = this.DocHeader; inter.DocDetail = this.DocDetail; inter.DocProvider = this.DocProvider; //Ejecucion de proceso List <Parameter> res = inter.AnularDocNC(); //Bitacora de ejecucion GuardarBitacora(res); //Obtencion de resultados resultado = utl.convertirBoolean(res.FirstOrDefault(f => f.ParameterName.Equals("Resultado")).Value); msg = utl.convertirString(res.FirstOrDefault(f => f.ParameterName.Equals("Mensaje")).Value); string extmsg = null; if (resultado) { //Actualizacion de registro de anulacion ActualizarRegsitroAnulacion(res); } //Captura de mensajes this.Mensaje = msg + extmsg; } catch (Exception ex) { //Captura de Excepcion err.AddErrors(ex, "Anulacion de NC"); this.Mensaje = "Error en la Ejecución: " + ex.Message; } return(resultado); }
//Obtencion de interface de servicio de facturacion electronica private IFacElecInterface ObtenerInterface(string proveedor) { //Busqueda de clase proveedor para instanciar interface var _className = (from t in System.Reflection.Assembly.GetExecutingAssembly().GetTypes() where t.Name.Equals(proveedor) select t.FullName).Single(); //Instancia de interface IFacElecInterface _class = (IFacElecInterface)Activator.CreateInstance(Type.GetType(_className)); //Retorno de interface return(_class); }
/// <summary> /// Funcion de Registro de documento segun datos enviados /// </summary> /// <param name="Resol">Resolucion de proveedor a la que pertenece el documento</param> /// <param name="TipoDoc">TipoDoc de documento a registrar</param> /// <param name="Serie">Serie del documento a registrar</param> /// <param name="DocNo">Correlativo del documento a registrar</param> /// <returns>Respuesta de éxito o fallo de registro. Ver Variable de mensaje</returns> //Registro de documento al proveedor public bool RegistrarDocumento(string Resol, string TipoDoc, string Serie, string DocNo) { bool resultado = false; string msg = null, cae = null; //Seteo de variables de negocio this.Resolucion = Resol; this.TipoDoc = TipoDoc; this.SerieDoc = Serie; this.NoDocumento = DocNo; //Seteo de modo de funcion Funcion = Modo.Registro; //Carga de Datos CargarDatos(); try { //Obtencion de Clase del proveedor para ejecucion del proceso string provider = utl.convertirString(DocProvider.Rows[0]["ClassName"]); //Seleccion de interface segun clase de proveedor IFacElecInterface inter = ObtenerInterface(provider); //Carga de elementos en la interface inter.DocHeader = this.DocHeader; inter.DocDetail = this.DocDetail; inter.DocProvider = this.DocProvider; //Ejecucion de proceso List <Parameter> res = inter.RegistrarDocumento(); //Bitacora de ejecucion GuardarBitacora(res); //Obtencion de resultados resultado = utl.convertirBoolean(res.FirstOrDefault(f => f.ParameterName.Equals("Resultado")).Value); msg = utl.convertirString(res.FirstOrDefault(f => f.ParameterName.Equals("Mensaje")).Value); cae = utl.convertirString(res.FirstOrDefault(f => f.ParameterName.Equals("CAE")).Value); string extmsg = null; //Verificacion de resultado exitoso if (resultado) { //Actualizacion de registros ActualizarRegistro(res); //Ejecucion de proceso de Documento PDF ProcesoPDF(res, ref extmsg); } else if (cae != "") { //Actualizacion por si CAE no regresa vacio pero dio error //ActualizarRegistroCAE(res); ActualizarRegistro(res); resultado = true; msg = "Se hizo registro de Documento. (E)"; } //Captura de mensajes this.Mensaje = msg + extmsg; } catch (Exception ex) { //Captura de Excepcion err.AddErrors(ex, "Registro de Documento"); this.Mensaje = "Error en la Ejecución: " + ex.Message; } return(resultado); }
/// <summary> /// Funcion de obtencion de documento segun datos enviados /// </summary> /// <param name="Resol">Resolucion de proveedor a la que pertenece el documento</param> /// <param name="TipoDoc">TipoDoc de documento a obtener</param> /// <param name="Serie">Serie del documento a obtener</param> /// <param name="DocNo">Correlativo del documento a obtener</param> /// <returns>Respuesta de éxito o fallo de obtencion de documento. Ver Variable de mensaje</returns> //Obtencion del documento del proveedor public bool ObtenerDocumento(string Resol, string TipoDoc, string Serie, string DocNo) { bool resultado = false; string msg = null; //Seteo de variables de negocio this.Resolucion = Resol; this.TipoDoc = TipoDoc; this.SerieDoc = Serie; this.NoDocumento = DocNo; //Seteo de modo de funcion Funcion = Modo.Obtencion; //Carga de Datos CargarDatos(); try { //Seteo de variables de archivo string filename = this.Resolucion + this.TipoDoc + this.SerieDoc + this.NoDocumento + ".pdf"; string localpath = utl.convertirString(utl.getConfigValue(this.ConfigFile, "DOCPATH", "services")); string remotepath = utl.convertirString(utl.getConfigValue(this.ConfigFile, "FTP_REMOTE_PATH", "ftp")); //Verificacion de existencia de archivo en servidor if (ftp.fileExist(remotepath, filename)) { //Descarga de documento resultado = DescargarDocumento(); //Verificacion de resultado if (!resultado) { this.Mensaje = "No se pudo descargar el documento. Revisar log"; } } else { //Obtencion de Clase del proveedor para ejecucion del proceso string provider = utl.convertirString(DocProvider.Rows[0]["ClassName"]); //Seleccion de interface segun clase de proveedor IFacElecInterface inter = ObtenerInterface(provider); //Carga de elementos en la interface inter.DocHeader = this.DocHeader; inter.DocDetail = this.DocDetail; inter.DocProvider = this.DocProvider; //Ejecucion de proceso List <Parameter> res = inter.ObtenerDocumento(); //Obtencion de resultados resultado = utl.convertirBoolean(res.FirstOrDefault(f => f.ParameterName.Equals("Resultado")).Value); msg = utl.convertirString(res.FirstOrDefault(f => f.ParameterName.Equals("Mensaje")).Value); string extmsg = null; //Verificacion de resultado if (resultado) { //Ejecucion de proceso de documento PDF ProcesoPDF(res, ref extmsg); if (extmsg != null) { //Captura de mensajes this.Mensaje = msg + extmsg; resultado = false; } } } } catch (Exception ex) { //Captura de Excepcion err.AddErrors(ex, "Obtencion de Documento"); this.Mensaje = "Error en la Ejecución: " + ex.Message; } return(resultado); }