/// <summary> /// Método encargado de revisar si el Pago tiene todos sus Documentos Relacionados dados de alta en el sistema y cambiar en automático el estatus. /// </summary> /// <param name="idUsuario"></param> /// <returns></returns> public RetornoOperacion ActualizaEstatusAutomatico(int idCompania, int idUsuario) { RetornoOperacion resultado = new RetornoOperacion(); byte nuevoEstatus = (byte)EstatusPago.DocumentosCompletos; using (DataTable dtDocumentos = ObtieneDocumentos(this._idPagoFacturado)) { if (Validacion.ValidaOrigenDatos(dtDocumentos)) { foreach (DataRow rowDocumento in dtDocumentos.Rows) { using (FacturadoProveedor factura = new FacturadoProveedor(rowDocumento["UUIDTDP"].ToString(), idCompania)) { if (!factura.habilitar) //Si falta alguna factura { nuevoEstatus = (byte)EstatusPago.DocumentosPendientes; break; //Dejar de revisar } } } resultado = _Editar(_idFacturadoProveedor, _fechaPago, _idFormaPagoP, _idMonedaP, _tipoCambio, _fechaTipoCambio, _monto, _numeroOperacion, _rfcEmisorCuentaBeneficiario, _idBancoOrdenanteExtranjero, _cuentaOrdenante, _rfcEmisorCuentaBeneficiario, _cuentaBeneficiario, _idTipoCadenaPago, (EstatusPago)nuevoEstatus, idUsuario, this._habilitar); } else { resultado = new RetornoOperacion("No se encontraron Documentos Relacionados en el Pago.", false); } } return(resultado); }
/// <summary> /// Método Privado encargado de Actualizar los Registros en BD /// </summary> /// <param name="id_factura_proveedor">Id de la Factura del Proveedor</param> /// <param name="cantidad">Cantidad del Concepto</param> /// <param name="unidad">Unidad expresada en el Concepto</param> /// <param name="identificador">identificador del Concepto</param> /// <param name="concepto_cobro">Concepto de Cobro</param> /// <param name="id_clasificacion_contable">Id de Clasificación Contable</param> /// <param name="valor_unitario">Valor Unitario</param> /// <param name="importe">Importe del Concepto</param> /// <param name="importe_pesos">Importe en Pesos del Concepto</param> /// <param name="tasa_impuesto_retenido">Tasa de Impuesto Retenido</param> /// <param name="importe_retenido">Importe Retenido</param> /// <param name="tasa_impuesto_trasladado">Tasa de Impuesto Trasladado</param> /// <param name="importe_trasladado">Importe Trasladado</param> /// <param name="id_usuario">Id de Usuario</param> /// <param name="habilitar">Estatus Habilitar</param> /// <returns></returns> private RetornoOperacion actualizaRegistros(int id_factura_proveedor, decimal cantidad, string unidad, string identificador, string concepto_cobro, int id_clasificacion_contable, decimal valor_unitario, decimal importe, decimal importe_pesos, decimal tasa_impuesto_retenido, decimal importe_retenido, decimal tasa_impuesto_trasladado, decimal importe_trasladado, int id_usuario, bool habilitar) { //Declarando Objeto de Retorno RetornoOperacion result = new RetornoOperacion(); //Armando Arreglo de Parametros object[] param = { 2, this._id_facturado_proveedor_concepto, id_factura_proveedor, cantidad, unidad, identificador, concepto_cobro, id_clasificacion_contable, valor_unitario, importe, importe_pesos, tasa_impuesto_retenido, importe_retenido, tasa_impuesto_trasladado, importe_trasladado, id_usuario, habilitar, "", "" }; //Instanciando la Factura using (FacturadoProveedor fp = new FacturadoProveedor(id_factura_proveedor)) { //Validando que exista la Factura if (fp.id_factura != 0) { //Validando que no este transferida if (!fp.bit_transferido) { //Obteniendo Resultado del SP result = CapaDatos.m_capaDeDatos.EjecutaProcAlmacenadoObjeto(_nom_sp, param); } else { //Instanciando Excepcion result = new RetornoOperacion("Factura esta Transferida. No se puede editar el Concepto"); } } else//Instanciando Excepcion { result = new RetornoOperacion("No existe la Factura"); } } //Devolviendo Resultado Obtenido return(result); }
/// <summary> /// Evento Producido al Presionar el Boton "Asignar Vales" /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnAsignarVales_Click(object sender, EventArgs e) { //Declarando Objeto de Retorno RetornoOperacion result = new RetornoOperacion(); //Validando que exista una Factura Seleccionada if (gvFacturas.SelectedIndex != -1) { //Obteniendo Filas Seleccionadas GridViewRow[] filas = TSDK.ASP.Controles.ObtenerFilasSeleccionadas(gvVales, "chkVarios"); //Validando que existan Vales Seleccionados if (filas.Length > 0) { //Inicializando Bloque Transacional using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Instanciando la Factura using (FacturadoProveedor fp = new FacturadoProveedor(Convert.ToInt32(gvFacturas.SelectedDataKey["Id"]))) { //Validando que exista la Factura if (fp.id_factura != 0) { //Declarando Contador int contador = 0; //Iniciando Ciclo while (contador < filas.Length) { //Obteniendo Indice gvVales.SelectedIndex = filas[contador].RowIndex; //Instanciando using (AsignacionDiesel ad = new AsignacionDiesel(Convert.ToInt32(gvVales.SelectedDataKey["Id"]))) { //Validando que exista el Vale if (ad.id_asignacion_diesel != 0) { //Asignando el Vale a la Factura result = ad.AsignaFacturaValeDiesel(fp.id_factura, ((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario); //Validando que la Operación haya sido exitosa contador = result.OperacionExitosa ? contador + 1 : filas.Length; } else { //Instanciando Excepción result = new RetornoOperacion("No existe el Vale"); } } } } else { //Instanciando Excepción result = new RetornoOperacion("No existe la Factura"); } } //Validando que la Operación haya sido exitosa if (result.OperacionExitosa) { //Completando Transacción trans.Complete(); } } //Validando el Resultado de la Operación if (result.OperacionExitosa) { //Obteniendo Factura de Proveedor int idFacturaProveedor = Convert.ToInt32(gvFacturas.SelectedDataKey["Id"]); //Vargando Reportes buscaVales(); buscaFacturas(); //Marcando Fila Controles.MarcaFila(gvFacturas, idFacturaProveedor.ToString(), "Id", "Id-Monto-Asignado", OrigenDatos.RecuperaDataTableDataSet((DataSet)Session["DS"], "Table"), lblOrdenadoFactura.Text, Convert.ToInt16(ddlTamanoFac.SelectedValue), true, 1); //Recargando Vales Asignados buscaValesAsignados(); } } else { //Instanciando Excepción result = new RetornoOperacion("Debe seleccionar al menos un Vale"); } } else { //Instanciando Excepción result = new RetornoOperacion("Debe Seleccionar una Factura"); } //Mostrando Resultado de Operación ScriptServer.MuestraNotificacion(btnAsignarVales, result, ScriptServer.PosicionNotificacion.AbajoDerecha); }
/// <summary> /// Método encargado de Exportar los Archivos XML de las Facturas de Proveedor /// </summary> private void exportaXML() { //Verificando que el GridView contiene Registros if (gvSaldosDetalle.DataKeys.Count > 0) { //Declarando Objeto de Retorno RetornoOperacion result = new RetornoOperacion(); //Creamos lista de archivos List <KeyValuePair <string, byte[]> > archivos = new List <KeyValuePair <string, byte[]> >(); //Creamos lista errores List <string> errores = new List <string>(); //Obteniendo Filas Seleccionadas GridViewRow[] selected_rows = Controles.ObtenerFilasSeleccionadas(gvSaldosDetalle, "chkVarios"); //Verificando que existan filas Seleccionadas if (selected_rows.Length != 0) { //Almacenando Rutas el Arreglo foreach (GridViewRow row in selected_rows) { //Asignando Indice gvSaldosDetalle.SelectedIndex = row.RowIndex; //Instanciando Factura using (SAT_CL.CXP.FacturadoProveedor factura = new FacturadoProveedor(Convert.ToInt32(gvSaldosDetalle.SelectedDataKey["NoFactura"]))) //Instanciando Proveedor using (SAT_CL.Global.CompaniaEmisorReceptor proveedor = new SAT_CL.Global.CompaniaEmisorReceptor(factura.id_compania_proveedor)) { //Validando que exista la Factura if (factura.habilitar && proveedor.habilitar) { //Declarando Objeto de Retorno byte[] xml = null; //Obteniendo Archivos using (DataTable dtArchivos = SAT_CL.Global.ArchivoRegistro.CargaArchivoRegistro(72, factura.id_factura, 8, 0)) { //Validando que Existan Registros if (Validacion.ValidaOrigenDatos(dtArchivos)) { //Recorriendo Archivos foreach (DataRow dr in dtArchivos.Rows) { try { //Obteniendo Bytes del Archivo xml = System.IO.File.ReadAllBytes(dr["URL"].ToString()); //Resultado Positivo result = new RetornoOperacion(0, "", true); } catch (Exception ex) { //Obteniendo Bytes del Archivo xml = null; //Instanciando resultado Positivo result = new RetornoOperacion(-1, ex.Message, false); //Añadiendo Error errores.Add(ex.Message); } //Validando que exista el Archivo if (xml != null) { //Declarando Variables Auxiliares Encoding encoding; string str = ""; //Intentando encontrar codificación try { //Leyendo Stream using (var stream = new MemoryStream(xml)) { //Leyendo XML using (var xmlreader = new XmlTextReader(stream)) { //Obteniendo Codificación xmlreader.MoveToContent(); encoding = xmlreader.Encoding; } } //Obteniendo Cadena del XML str = encoding.GetString(xml); } catch (Exception ex) { //Obteniendo Cadena del XML str = Encoding.Default.GetString(xml); } //Intentando Obtener Bytes try { //Obteniendo XML en Codificación UTF8 xml = Encoding.UTF8.GetBytes(str); //Instanciando resultado Positivo result = new RetornoOperacion(0, "", true); } catch (Exception ex) { //Obteniendo Bytes del Archivo xml = null; //Instanciando resultado Positivo result = new RetornoOperacion(-1, ex.Message, false); } } else { //Añadiendo Error errores.Add(string.Format("No se pudo recuperar la Factura '{0}{1}'", factura.serie, factura.folio)); } //Terminando Ciclo break; } } } //Validando Operación Exitosa if (result.OperacionExitosa) { //Construyendo Nombre del Archivo string file_name_cxp = (factura.serie + factura.folio).Equals("") ? factura.uuid : factura.serie + factura.folio; //Añadimos XML archivos.Add(new KeyValuePair <string, byte[]>(string.Format("{0}_{1}.xml", proveedor.rfc, file_name_cxp), xml)); } } else { //Asignando Error errores.Add("No Existe la Factura."); } } } //Validando operación Exitosa if (result.OperacionExitosa) { //Genera el zip con las rutas byte[] file_zip = Archivo.ConvirteArchivoZIP(archivos, out errores); //Si almenos un archivo fue correcto descarga if (file_zip != null) { //Desmarcando Filas Controles.SeleccionaFilasTodas(gvSaldosDetalle, "chkVarios", false); //Se crea un CheckBox donde se le asigna el Control CheckBox con el ID "chkTodos" CheckBox chkTodos = (CheckBox)gvSaldosDetalle.HeaderRow.FindControl("chkTodos"); //Validando que exista el Control if (chkTodos != null) { //Desmarcarndo Control chkTodos.Checked = false; } //Descarga el zip generado Archivo.DescargaArchivo(file_zip, string.Format("Facturas_{0:yyyyMMddHHmmss}.zip", Fecha.ObtieneFechaEstandarMexicoCentro()), Archivo.ContentType.binary_octetStream); } } //Mostrando Mensaje de Error string error_msn = ""; //Recorremos errores foreach (string error in errores) { //Muestra mensaje de Error error_msn += error + " \n"; } //Validando que Existan Errores if (!error_msn.Equals("")) { //Mostrando Errores ScriptServer.MuestraNotificacion(this.Page, error_msn, ScriptServer.NaturalezaNotificacion.Error, ScriptServer.PosicionNotificacion.AbajoDerecha); } } else { //Mostrando Excepción ScriptServer.MuestraNotificacion(this.Page, "No hay Facturas Seleccionadas", ScriptServer.NaturalezaNotificacion.Alerta, ScriptServer.PosicionNotificacion.AbajoDerecha); } //Inicializando Indices Controles.InicializaIndices(gvSaldosDetalle); } else { //Mostrando Excepción ScriptServer.MuestraNotificacion(this.Page, "No existen Registros", ScriptServer.NaturalezaNotificacion.Alerta, ScriptServer.PosicionNotificacion.AbajoDerecha); } }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void imbValidacion_Click(object sender, ImageClickEventArgs e) { //Validando Datos if (gvSaldosDetalle.DataKeys.Count > 0) { //Declarando Objeto de Retorno RetornoOperacion retorno = new RetornoOperacion(); //Seleccionando Fila Controles.SeleccionaFila(gvSaldosDetalle, sender, "imb", false); //Instanciando Factura using (SAT_CL.CXP.FacturadoProveedor factura = new FacturadoProveedor(Convert.ToInt32(gvSaldosDetalle.SelectedDataKey["NoFactura"]))) //Instanciando Proveedor using (SAT_CL.Global.CompaniaEmisorReceptor proveedor = new SAT_CL.Global.CompaniaEmisorReceptor(factura.id_compania_proveedor)) { //Validando que exista la Factura if (factura.habilitar && proveedor.habilitar) { //Obteniendo Archivos using (DataTable dtArchivos = SAT_CL.Global.ArchivoRegistro.CargaArchivoRegistro(72, factura.id_factura, 8, 0)) { //Validando que Existan Registros if (Validacion.ValidaOrigenDatos(dtArchivos)) { //Recorriendo Archivos foreach (DataRow dr in dtArchivos.Rows) { //Declarando auxiliares string rfc_emisor, rfc_receptor, UUID; decimal monto; DateTime fecha_expedicion; //Obteniendo Archivo byte[] comp = System.IO.File.ReadAllBytes(dr["URL"].ToString()); //Declarando Documento XML XmlDocument xmlDocument = new XmlDocument(); XDocument xDocument = new XDocument(); //Obteniendo XML en cadena using (MemoryStream ms = new MemoryStream(comp)) //Cargando Documento XML xmlDocument.Load(ms); //Convirtiendo XML xDocument = TSDK.Base.Xml.ConvierteXmlDocumentAXDocument(xmlDocument); //Validando versión switch (xDocument.Root.Attribute("version") != null ? xDocument.Root.Attribute("version").Value : xDocument.Root.Attribute("Version").Value) { case "3.2": case "3.3": { //Realizando validación de estatus en SAT retorno = SAT_CL.FacturacionElectronica.Comprobante.ValidaEstatusPublicacionSAT(xmlDocument, out rfc_emisor, out rfc_receptor, out monto, out UUID, out fecha_expedicion); //Colocando resultado sobre controles imgValidacionSAT.Src = retorno.OperacionExitosa ? "../Image/Exclamacion.png" : "../Image/ExclamacionRoja.png"; headerValidacionSAT.InnerText = retorno.Mensaje; lblRFCEmisor.Text = rfc_emisor; lblRFCReceptor.Text = rfc_receptor; lblUUIDM.Text = UUID; lblTotalFactura.Text = monto.ToString("C"); lblFechaExpedicion.Text = fecha_expedicion.ToString("dd/MM/yyyy HH:mm"); break; } } } } } } } } //Mostrando Ventana Modal ScriptServer.AlternarVentana(this.Page, "ValidacionSAT", "contenidoResultadoConsultaSATModal", "contenidoResultadoConsultaSAT"); }
/// <summary> /// Evento Producido al Dar Click en "Descargar" /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void lnkDescargaXML_Click(object sender, EventArgs e) { //Validando que existan Registros if (gvSaldosDetalle.DataKeys.Count > 0) { //Declarando Objeto de Retorno RetornoOperacion result = new RetornoOperacion(); //Declarando Documento XML XDocument doc = new XDocument(); //Seleccionando Fila TSDK.ASP.Controles.SeleccionaFila(gvSaldosDetalle, sender, "lnk", false); //Instanciando Factura using (SAT_CL.CXP.FacturadoProveedor factura = new FacturadoProveedor(Convert.ToInt32(gvSaldosDetalle.SelectedDataKey["NoFactura"]))) //Instanciando Proveedor using (SAT_CL.Global.CompaniaEmisorReceptor proveedor = new SAT_CL.Global.CompaniaEmisorReceptor(factura.id_compania_proveedor)) { //Validando que exista la Factura if (factura.habilitar && proveedor.habilitar) { //Declarando Objeto de Retorno byte[] xml = null; //Obteniendo Archivos using (DataTable dtArchivos = SAT_CL.Global.ArchivoRegistro.CargaArchivoRegistro(72, factura.id_factura, 8, 0)) { //Validando que Existan Registros if (Validacion.ValidaOrigenDatos(dtArchivos)) { //Recorriendo Archivos foreach (DataRow dr in dtArchivos.Rows) { try { //Obteniendo Bytes del Archivo xml = System.IO.File.ReadAllBytes(dr["URL"].ToString()); //Resultado Positivo result = new RetornoOperacion(0, "", true); } catch (Exception ex) { //Obteniendo Bytes del Archivo xml = null; //Instanciando resultado Positivo result = new RetornoOperacion(-1, ex.Message, false); } //Validando que exista el Archivo if (xml != null) { //Declarando Variables Auxiliares Encoding encoding; string str = ""; //Intentando encontrar codificación try { //Leyendo Stream using (var stream = new MemoryStream(xml)) { //Leyendo XML using (var xmlreader = new XmlTextReader(stream)) { //Obteniendo Codificación xmlreader.MoveToContent(); encoding = xmlreader.Encoding; } } //Obteniendo Cadena del XML str = encoding.GetString(xml); } catch (Exception ex) { //Obteniendo Cadena del XML str = Encoding.Default.GetString(xml); } //Intentando Obtener Bytes try { //Obteniendo XML en Codificación UTF8 xml = Encoding.UTF8.GetBytes(str); //Instanciando resultado Positivo result = new RetornoOperacion(0, "", true); } catch (Exception ex) { //Obteniendo Bytes del Archivo xml = null; //Instanciando resultado Positivo result = new RetornoOperacion(-1, ex.Message, false); } } //Terminando Ciclo break; } } } //Validando Operación Exitosa if (result.OperacionExitosa) { //Descargando Archivo PDF TSDK.Base.Archivo.DescargaArchivo(xml, string.Format("{0}_{1}{2}.xml", proveedor.rfc, factura.serie, factura.folio), TSDK.Base.Archivo.ContentType.text_xml); } else { //Mostrando Excepción ScriptServer.MuestraNotificacion(this, result, ScriptServer.PosicionNotificacion.AbajoDerecha); } } else { //Instanciando resultado Positivo result = new RetornoOperacion("No Existe la Factura", false); //Mostrando Excepción ScriptServer.MuestraNotificacion(this, result, ScriptServer.PosicionNotificacion.AbajoDerecha); } } //Inicializando Indices Controles.InicializaIndices(gvSaldosDetalle); } }
/// <summary> /// Evento Producido al Presionar el Boton "Asignar IAVE" /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnAsignarIave_Click(object sender, EventArgs e) { //Declarando Objeto de Retorno RetornoOperacion result = new RetornoOperacion(); //Declarando Total Casetas Decimal TotalCasetas = 0; Decimal TotalFacturaAsignado = 0; //Validando que exista una Factura Seleccionada if (gvFacturas.SelectedIndex != -1) { //Obteniendo Filas Seleccionadas GridViewRow[] filas = TSDK.ASP.Controles.ObtenerFilasSeleccionadas(gvIaves, "chkVarios"); //Validando que existan IAVE Seleccionados if (filas.Length > 0) { //Inicializando Bloque Transacional using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Instanciando la Factura using (FacturadoProveedor fp = new FacturadoProveedor(Convert.ToInt32(gvFacturas.SelectedDataKey["Id"]))) { //Validando que exista la Factura if (fp.id_factura != 0) { //Declarando Contador int contador = 0; //Iniciando Ciclo Total Casetas Seleccionados while (contador < filas.Length) { //Obteniendo Indice gvIaves.SelectedIndex = filas[contador].RowIndex; //Instanciando if (Convert.ToInt32(gvIaves.SelectedDataKey["Id"]) > 0) { //Validando que exista el IAVE TotalCasetas = TotalCasetas + Convert.ToDecimal(gvIaves.SelectedDataKey["Monto"]); contador = contador + 1; } } //Asignacion TotalFacturaAsignado = Convert.ToDecimal(gvFacturas.SelectedDataKey["Asignado"]) > 0 ? (fp.total_factura - Convert.ToDecimal(gvFacturas.SelectedDataKey["Asignado"])) : fp.total_factura; if (TotalCasetas <= TotalFacturaAsignado) { //Declarando Contador int contadori = 0; //Iniciando Ciclo while (contadori < filas.Length) { //Obteniendo Indice gvIaves.SelectedIndex = filas[contadori].RowIndex; TotalCasetas = TotalCasetas + Convert.ToDecimal(gvIaves.SelectedDataKey["Id"]); //Instanciando using (SAT_CL.Ruta.CrucesAutorizadosIave Iave = new SAT_CL.Ruta.CrucesAutorizadosIave(Convert.ToInt32(gvIaves.SelectedDataKey["Id"]))) { //Validando que exista el IAVE if (Iave.habilitar) { //Asignando el Iave a la Factura result = Iave.AsignaFacturaIave(fp.id_factura, 2, ((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario); //Validando que la Operación haya sido exitosa contadori = result.OperacionExitosa ? contadori + 1 : filas.Length; } } } } else { //Instanciando Excepción result = new RetornoOperacion("El Total de la factura es menor al costos de las casetas"); } } else { //Instanciando Excepción result = new RetornoOperacion("No existe la Factura"); } } //Validando que la Operación haya sido exitosa if (result.OperacionExitosa) { //Completando Transacción trans.Complete(); } } //Validando el Resultado de la Operación if (result.OperacionExitosa) { //Obteniendo Factura de Proveedor int idFacturaProveedor = Convert.ToInt32(gvFacturas.SelectedDataKey["Id"]); //Vargando Reportes buscarCrucesIaves(); buscaFacturas(); //Marcando Fila Controles.MarcaFila(gvFacturas, idFacturaProveedor.ToString(), "Id", "Id-Monto-Asignado", OrigenDatos.RecuperaDataTableDataSet((DataSet)Session["DS"], "Table"), lblOrdenadoFactura.Text, Convert.ToInt16(ddlTamanoFac.SelectedValue), true, 1); //Recargando IAVES Asignados buscaIavesAsignados(Convert.ToInt32(gvFacturas.SelectedDataKey["Id"])); } } else { //Instanciando Excepción result = new RetornoOperacion("Debe seleccionar al menos una caseta Iave"); } } else { //Instanciando Excepción result = new RetornoOperacion("Debe Seleccionar una Factura"); } //Mostrando Resultado de Operación ScriptServer.MuestraNotificacion(btnAsignarIave, result, ScriptServer.PosicionNotificacion.AbajoDerecha); }
/// <summary> /// Método encargado de Importar el Archvio XML /// </summary> /// <returns></returns> private RetornoOperacion guardaXML() { RetornoOperacion resultado = new RetornoOperacion(); int idFacturadoProveedor = 0; if (Session["XML"] != null) { XDocument factura = (XDocument)Session["XML"]; XNamespace nsCFDI = factura.Root.GetNamespaceOfPrefix("cfdi"); XNamespace nsTFD = CapaNegocio.m_capaNegocio.RegresaVariableCatalogoBD("Namespace TimbreFiscalDigital"); switch ((Pagina.Estatus)Session["estatus"]) { default: { using (TransactionScope transaccionFactura = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Validando versión switch (factura.Root.Attribute("version") != null ? factura.Root.Attribute("version").Value : factura.Root.Attribute("Version").Value) { case "3.2": { ScriptServer.MuestraNotificacion(this.Page, "La versión 3.2 ya no es soportada", ScriptServer.NaturalezaNotificacion.Alerta, ScriptServer.PosicionNotificacion.AbajoDerecha); break; } case "3.3": { //Insertando CFDI 3.3 usando el tipo de servicio de la compañia using (SAT_CL.Global.CompaniaEmisorReceptor compania = new SAT_CL.Global.CompaniaEmisorReceptor(((UsuarioSesion)Session["usuario_sesion"]).id_compania_emisor_receptor)) resultado = FacturadoProveedor.ImportaComprobanteVersion33(compania.id_compania_emisor_receptor, compania.id_tipo_servicio, Session["XMLFileName"].ToString(), factura, ((Usuario)Session["usuario"]).id_usuario); break; } } if (resultado.OperacionExitosa) { transaccionFactura.Complete(); } } break; } } } else { //Instanciando Excepción resultado = new RetornoOperacion("Cargue su archivo XML para importar"); } //Validando que exista if (resultado.OperacionExitosa) { //Reasignando Id de registro resultado = new RetornoOperacion(idFacturadoProveedor); //Establecemos el id del registro Session["id_registro"] = resultado.IdRegistro; //Establecemos el estatus de la forma Session["estatus"] = Pagina.Estatus.Lectura; //Eliminando Contenido en Sessión del XML Session["XML"] = Session["XMLFileName"] = null; //Inicializamos la forma //inicializaPagina(); //Actualizamos la etiqueta de errores ScriptServer.MuestraNotificacion(this, resultado.Mensaje, ScriptServer.NaturalezaNotificacion.Exito, ScriptServer.PosicionNotificacion.AbajoDerecha); } //Devolviendo resultado Obtenido return(resultado); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void lnkSeleccionarPago_Click(object sender, EventArgs e) { if (gvPagosEgreso.DataKeys.Count > 0) { LinkButton lnk = (LinkButton)sender; Controles.SeleccionaFila(gvPagosEgreso, lnk, "lnk", false); switch (lnk.CommandName) { case "Abrir": { try { using (DataTable dtDocumentos = PagoFacturado.ObtieneDocumentos(Convert.ToInt32(gvPagosEgreso.SelectedDataKey["IdTPF"]))) { if (Validacion.ValidaOrigenDatos(dtDocumentos)) { Controles.CargaGridView(gvDocumentosPago, dtDocumentos, "IdTDP-IdPF", "IdTDP"); } else { Controles.InicializaGridview(gvDocumentosPago); } } } catch { ScriptServer.MuestraNotificacion(this.Page, "No hay Documentos coincidentes", ScriptServer.NaturalezaNotificacion.Error, ScriptServer.PosicionNotificacion.AbajoDerecha); } break; } case "Ligar": { decimal totalSaldoDocumentos = 0; int idCompania = ((UsuarioSesion)Session["usuario_sesion"]).id_compania_emisor_receptor; int idUsuario = ((Usuario)Session["usuario"]).id_usuario; RetornoOperacion resultado = new RetornoOperacion(); try { //Volver a obtener los Documentos Relacionados del Pago using (DataTable dtDocumentos = PagoFacturado.ObtieneDocumentos(Convert.ToInt32(gvPagosEgreso.SelectedDataKey["IdTPF"]))) { if (Validacion.ValidaOrigenDatos(dtDocumentos)) { //Revisar si el total de los saldos pagados de todos los Documentos Relacionados, coincide con el monto del Pago foreach (DataRow rowDocumento in dtDocumentos.Rows) { totalSaldoDocumentos += Convert.ToDecimal(rowDocumento["ImportePagTDP"]); } using (PagoFacturado pago = new PagoFacturado(Convert.ToInt32(gvPagosEgreso.SelectedDataKey["IdTPF"]))) { if (totalSaldoDocumentos == pago.monto) { //Crear ficha entre el Egreso seleccionado y la factura del Documento Relacionado using (TransactionScope transaccionFactura = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { resultado = FE33.EgresoIngresoComprobante.InsertaEgresoIngresoComprobante( Convert.ToInt32(gvEgresos.SelectedDataKey["IdTEI"]), 2, //Tipo Operacion: Egreso pago.idFacturadoProveedor, 1, //Estatus: Capturada 0, //No reemplaza idUsuario); if (resultado.OperacionExitosa) { int idEgresoIngresoComp = resultado.IdRegistro; foreach (DataRow rowDocumento in dtDocumentos.Rows) { //Instanciar por el UUID del Documento Relacionado using (FacturadoProveedor facturado = new FacturadoProveedor(rowDocumento["UUIDTDP"].ToString(), idCompania)) { if (facturado.habilitar) { DataTable listaAplicaciones = FichaIngresoAplicacion.ObtieneAplicacionesFacturas(72, facturado.id_factura, Convert.ToInt32(gvEgresos.SelectedDataKey["IdTEI"])); int idFichaAplicacion = ( from DataRow rowAplicacion in listaAplicaciones.Rows where rowAplicacion.Field <int>("IdRegistro") == facturado.id_factura select rowAplicacion.Field <int>("Id")).FirstOrDefault(); resultado = FE33.ComprobantePagoDocumentoRelacionado.InsertarComprobantePagoDocumentoRelacionado( FE33.ComprobantePagoDocumentoRelacionado.TipoOperacion.Egreso, pago.idFacturadoProveedor, FE33.ComprobantePagoDocumentoRelacionado.TipoOperacionDocumento.Egreso, facturado.id_factura, Convert.ToInt32(gvEgresos.SelectedDataKey["IdTEI"]), idFichaAplicacion, Convert.ToDecimal(rowDocumento["ImporteSalAntTDP"]), Convert.ToDecimal(rowDocumento["ImportePagTDP"]), Convert.ToByte(rowDocumento["NoParcialidadTDP"]), idEgresoIngresoComp, idUsuario); } else { resultado = new RetornoOperacion($"La factura con UUID: {rowDocumento["UUIDTDP"].ToString()} no se encuentra en el sistema.", false); break; } } } } //Cambiar estatus al Pago a Ligado if (resultado.OperacionExitosa) { resultado = pago.ActualizaEstatus(PagoFacturado.EstatusPago.Ligado, idUsuario); } if (resultado.OperacionExitosa) { transaccionFactura.Complete(); } } } else { resultado = new RetornoOperacion("Los Importes de los Documentos Relacionados, no coinciden con el monto del Pago.", false); } } } else { resultado = new RetornoOperacion("El Pago no contiene Documentos Relacionados", false); } } } catch { ScriptServer.MuestraNotificacion(this.Page, "No hay Pagos coincidentes", ScriptServer.NaturalezaNotificacion.Error, ScriptServer.PosicionNotificacion.AbajoDerecha); } ScriptServer.MuestraNotificacion(this.Page, resultado.Mensaje, ScriptServer.NaturalezaNotificacion.Error, ScriptServer.PosicionNotificacion.AbajoDerecha); break; } } } }