/// <summary> /// Método Público encargado de Guardar los Conceptos /// </summary> /// <returns></returns> public RetornoOperacion GuardarFacturaConcepto() { //Declarando Objeto de Retorno RetornoOperacion result = new RetornoOperacion(); //Validando que exista una Factura if (this.idFactura != 0) { //Validando que exista una Relación en Facturación Electronica if (FacturadoFacturacion.ObtieneFacturacionElectronicaActiva(this.idFactura) == 0) { //Validando que exista un Concepto if (gvConceptosFacturaConcepto.SelectedIndex != -1) { //Instanciando Registro using (FacturadoConcepto objFacturadoConcepto = new FacturadoConcepto(Convert.ToInt32(gvConceptosFacturaConcepto.SelectedDataKey["Id"]))) { //Editando Valores del Concepto result = objFacturadoConcepto.EditaFacturaConcepto(objFacturadoConcepto.id_factura, Convert.ToDecimal(txtCantidadFacturaConcepto.Text == "" ? "0" : txtCantidadFacturaConcepto.Text), Convert.ToByte(ddlUnidadFacturaConcepto.SelectedValue), txtIdentificadorFacturaConcepto.Text, Convert.ToInt32(ddlConceptoCobroFacturaConcepto.SelectedValue), Convert.ToDecimal(txtValorUniFacturaConcepto.Text == "" ? "0" : txtValorUniFacturaConcepto.Text), 0, Convert.ToByte(ddlImpuestoRetenido.SelectedValue), Convert.ToDecimal(txtTasaImpRetFacturaConcepto.Text == "" ? "0" : txtTasaImpRetFacturaConcepto.Text), Convert.ToByte(ddlImpuestoTrasladado.SelectedValue), Convert.ToDecimal(txtTasaImpTraFacturaConcepto.Text == "" ? "0" : txtTasaImpTraFacturaConcepto.Text), objFacturadoConcepto.id_cargo_recurrente, ((Usuario)Session["usuario"]).id_usuario); } } else { //Insertando Concepto result = FacturadoConcepto.InsertaFacturaConcepto(this.idFactura, Convert.ToDecimal(txtCantidadFacturaConcepto.Text == "" ? "0" : txtCantidadFacturaConcepto.Text), Convert.ToByte(ddlUnidadFacturaConcepto.SelectedValue), txtIdentificadorFacturaConcepto.Text, Convert.ToInt32(ddlConceptoCobroFacturaConcepto.SelectedValue), Convert.ToDecimal(txtValorUniFacturaConcepto.Text == "" ? "0" : txtValorUniFacturaConcepto.Text), 0, Convert.ToByte(ddlImpuestoRetenido.SelectedValue), Convert.ToDecimal(txtTasaImpRetFacturaConcepto.Text == "" ? "0" : txtTasaImpRetFacturaConcepto.Text), Convert.ToByte(ddlImpuestoTrasladado.SelectedValue), Convert.ToDecimal(txtTasaImpTraFacturaConcepto.Text == "" ? "0" : txtTasaImpTraFacturaConcepto.Text), 0, ((Usuario)Session["usuario"]).id_usuario); } } else { //Inicializando Contructor con Excepcion Personalizada result = new RetornoOperacion("La Factura esta Registrada ó Timbrada en Facturación Electronica"); } } else { //Inicializando Contructor con Excepcion Personalizada result = new RetornoOperacion("Debe existir la factura"); } //Validando que la Operación haya sido exitosa if (result.OperacionExitosa) { //Inicializando Reporte inicializaReporteConceptos(this.idFactura); //Limpiando Controles limpiaControlesConcepto(); } //Devolviendo Resultado Obtenido return(result); }
/// <summary> /// Método Público encargado de Eliminar los Conceptos /// </summary> /// <returns></returns> public RetornoOperacion EliminaFacturaConcepto() { //Declarando Objeto de Operacion RetornoOperacion resultCon = new RetornoOperacion(); //Validando que existan Registros if (gvConceptosFacturaConcepto.DataKeys.Count > 0) { //Instanciando Concepto using (FacturadoConcepto fc = new FacturadoConcepto(Convert.ToInt32(gvConceptosFacturaConcepto.SelectedDataKey["Id"]))) { //Validando que exista una Relación en Facturación Electronica 3.3 if (FacturadoFacturacion.ObtieneFacturacionElectronicaActivaV3_3(this.idFactura) == 0) { //Validando que exista una Relación en Facturación Electronica if (FacturadoFacturacion.ObtieneFacturacionElectronicaActiva(this.idFactura) == 0) { //Deshabilitando Registro resultCon = fc.DeshabilitaFacturaConcepto(((Usuario)Session["usuario"]).id_usuario); } else { //Inicializando Contructor con Excepcion Personalizada resultCon = new RetornoOperacion("La Factura esta Registrada en Facturación Electronica v3.2"); } } else { //Inicializando Contructor con Excepcion Personalizada resultCon = new RetornoOperacion("La Factura esta Registrada en Facturación Electronica v3.3"); } //Validando que la Operacion fuera exitosa if (resultCon.OperacionExitosa) { //Limpiando Controles limpiaControlesConcepto(); //Obteniendo Conceptos inicializaReporteConceptos(this.idFactura); } } } else { //Inicializando Parametros resultCon = new RetornoOperacion("No hay Conceptos"); } //Actualizando encabezado de Factura return(resultCon); }
/// <summary> /// Cancelar CFDI /// </summary> private RetornoOperacion cancelaCFDI() { //Declaramos resultado RetornoOperacion resultado = new RetornoOperacion(); //Inicializando Bloque Transaccional using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Instanciamos Comprobamte using (SAT_CL.FacturacionElectronica.Comprobante objCompobante = new SAT_CL.FacturacionElectronica.Comprobante(Convert.ToInt32(gvComprobantes.SelectedDataKey["Id"]))) { //Enviamos link resultado = objCompobante.CancelaComprobante(((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario); //Validamos Resultado if (resultado.OperacionExitosa) { //Insertando Referencia resultado = SAT_CL.Global.Referencia.InsertaReferencia(objCompobante.id_comprobante, 119, SAT_CL.Global.ReferenciaTipo.ObtieneIdReferenciaTipo(0, 119, "Motivo Cancelación", 0, "Facturacion Electrónica"), txtMotivo.Text, TSDK.Base.Fecha.ObtieneFechaEstandarMexicoCentro(), ((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario, true); //Validando Operación Exitosa if (resultado.OperacionExitosa) { //Instanciando Aplicaciones using (DataTable dtAplicaciones = SAT_CL.CXC.FichaIngresoAplicacion.ObtieneFichasFacturas(0, Convert.ToInt32(gvComprobantes.SelectedDataKey["IdFactura"]))) { //Validando que existan Aplicaciones if (TSDK.Datos.Validacion.ValidaOrigenDatos(dtAplicaciones)) { //Recorriendo Registros foreach (DataRow dr in dtAplicaciones.Rows) { //Instanciando Aplicacion de la Factura using (SAT_CL.CXC.FichaIngresoAplicacion fia = new SAT_CL.CXC.FichaIngresoAplicacion(Convert.ToInt32(dr["Id"]))) { //Validando que exista la Aplicación if (fia.id_ficha_ingreso_aplicacion > 0) { //Deshabilitando Ficha de Ingreso resultado = fia.DeshabilitarFichaIngresoAplicacion(((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario); //Validando Operación Exitosa if (!resultado.OperacionExitosa) { //Terminando Ciclo break; } else { //Instanciando Ficha de Ingreso using (SAT_CL.Bancos.EgresoIngreso fi = new SAT_CL.Bancos.EgresoIngreso(fia.id_egreso_ingreso)) { //Validando que exista el Registro if (fi.habilitar) { //Obteniendo Facturas Aplicadas using (DataTable dtAplicacionesFicha = SAT_CL.CXC.FichaIngresoAplicacion.ObtieneFichasFacturas(fi.id_egreso_ingreso, 0)) { //Si no existen Aplicaciones if (!TSDK.Datos.Validacion.ValidaOrigenDatos(dtAplicacionesFicha)) { //Actualizando Estatus de la Ficha resultado = fi.ActualizaFichaIngresoEstatus(SAT_CL.Bancos.EgresoIngreso.Estatus.Capturada, ((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario); //Validando Operación Correcta if (resultado.OperacionExitosa) { //Terminando Ciclo break; } } } } } } } } } //Validando Desaplicación Exitosa if (resultado.OperacionExitosa) { //Declaramos Variable int facturado = 0; //Obtenemos Facturado Fcaturacion facturado = FacturadoFacturacion.ObtieneRelacionFacturaElectronica(objCompobante.id_comprobante); //Instanciamos FcaturadoFacturacion using (FacturadoFacturacion objfacturado = new FacturadoFacturacion(facturado)) { //Instanciamos Facturado using (Facturado objFacturado = new Facturado(objfacturado.id_factura)) { //Actualizando Estatus de la Factura resultado = objFacturado.ActualizaEstatusFactura(Facturado.EstatusFactura.Registrada, ((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario); } } } } else { //Instanciando Factura resultado = new RetornoOperacion(Convert.ToInt32(gvComprobantes.SelectedDataKey["IdFactura"])); } //Validando Operación Exitosa if (resultado.OperacionExitosa) { //Cerramo Ventana Modal alternaVentanaModal("CancelarCFDI", btnAceptarCancelacionCFDI); //Carga Comprobante cargaComprobantes(); //Completando Transacción trans.Complete(); } } } } } } //Devolvemos Valor return(resultado); }
/// <summary> /// Método encargado de Configurar las Relaciones de los Comprobantes en base al Comprobante Vigente Actual /// </summary> /// <param name="id_factura_global">Factura Global</param> /// <param name="id_cfdi_33">Comprobante Nuevo v3.3</param> /// <param name="id_usuario">Usuario que actualiza el Registro</param> /// <returns></returns> public static RetornoOperacion ConfiguraRelacionComprobanteCancelacionFacturaGlobal(int id_factura_global, int id_cfdi_33, int id_usuario) { //Declarando Objeto de Retorno RetornoOperacion result = new RetornoOperacion(); //Inicializando Bloque Transaccional using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Obteniendo Factura Electronica Cancelada int idFE33Cancelada = FacturadoFacturacion.ObtieneFacturaElectronicaFacturaGlobalCanceladaV3_3(id_factura_global); //Validando existencia de una Cancelación Previa if (idFE33Cancelada > 0) { //Obteniendo Relaciones del Comprobante Cancelado using (DataTable dtRelaciones = ComprobanteRelacion.ObtieneRelacionesComprobante(idFE33Cancelada)) { //Validando Relaciones if (Validacion.ValidaOrigenDatos(dtRelaciones)) { //Recorriendo Relaciones foreach (DataRow dr in dtRelaciones.Rows) { //Instanciando Relación using (ComprobanteRelacion cr = new ComprobanteRelacion(Convert.ToInt32(dr["Id"]))) { //Validando Relación if (cr.habilitar) { //Actualizando Comprobante result = cr.EditaComprobanteRelacion(id_cfdi_33, cr.id_comprobante_relacionado, cr.id_tipo_relacion, cr.secuencia_relacion, cr.id_aplicacion, id_usuario); } else { //Instanciando Excepción result = new RetornoOperacion("No se puede recuperar la Relación"); } //Validando Operación if (!result.OperacionExitosa) { //Terminando Ciclo break; } } } } else { //Instanciando Resultado Positivo result = new RetornoOperacion(0, "No existe ninguna relación previa", true); } //Validando Operación Exitosa if (result.OperacionExitosa) { //Insertando Nueva Relación de Cancelación result = ComprobanteRelacion.InsertaComprobanteRelacion(id_cfdi_33, idFE33Cancelada, 4, 0, 0, id_usuario); } } } else { //Instanciando Resultado Positivo result = new RetornoOperacion(0, "No existe ninguna cancelación previa", true); } //Validando Operación Exitosa if (result.OperacionExitosa) { //Completando transacción scope.Complete(); } } //Devolviendo Resultado Obtenido return(result); }