/// <summary> /// Método Público encargado de Deshabilitar los Conceptos de las Facturas /// </summary> /// <param name="id_usuario">Id de Usuario</param> /// <returns></returns> public RetornoOperacion DeshabilitaFacturaConcepto(int id_usuario) { //Declarando Objeto de Retorno RetornoOperacion result = new RetornoOperacion(); //Validando si esta ligada a una Factura Global if (!validaConceptoFacturaGlobal()) { //Inicializando Bloques using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Instanciando factura using (Facturado fac = new Facturado(this._id_factura)) { //validando que exista la Factura if (fac.habilitar) { //Invocando Método de Actualización result = this.actualizaRegistros(this._id_factura, this._cantidad, this._id_unidad, this._identificador, this._id_concepto_cobro, this._valor_unitario, this._importe_pesos, this.id_impuesto_retenido, this._tasa_impuesto_retenido, this._id_impuesto_trasladado, this._tasa_impuesto_trasladado, this._id_cargo_recurrente, id_usuario, false); //Validando que se Actualizara if (result.OperacionExitosa) { //Obteniendo Valores Totales using (DataTable dt = FacturadoConcepto.ObtieneValoresTotalesFactura(this._id_factura)) { //Validando que la tabla contenga Valores if (TSDK.Datos.Validacion.ValidaOrigenDatos(dt)) { //Recorriendo cada Fila foreach (DataRow dr in dt.Rows) { //Editando Factura result = fac.EditaFactura(Convert.ToDecimal(dr["TotalFactura"]), Convert.ToDecimal(dr["SubTotalFactura"]), Convert.ToDecimal(dr["TrasladadoFactura"]), Convert.ToDecimal(dr["RetenidoFactura"]), id_usuario); } } } } //Validando que las Operaciones hayan sido exitosas if (result.OperacionExitosa) { //Instanciando Factura Concepto result = new RetornoOperacion(this._id_detalle_facturado); //Completando Transaccion scope.Complete(); } } else { //Instanciando Excepción result = new RetornoOperacion("No existe la Factura"); } } } } else { //Instanciando Excepción result = new RetornoOperacion("El detalle se encuentra en una Factura Global, Imposible su Eliminación"); } //Devolviendo Objeto de Retorno return(result); }
/// <summary> /// Método Público encargado de Editar los Conceptos de las Facturas /// </summary> /// <param name="id_factura">Id de Factura</param> /// <param name="cantidad">Cantidad</param> /// <param name="id_unidad">Tipo de Unidad</param> /// <param name="identificador">Identificador</param> /// <param name="id_concepto_cobro">Concepto del Cobro</param> /// <param name="valor_unitario">Valor Unitario</param> /// <param name="importe_pesos">Importe en Pesos</param> /// <param name="id_impuesto_retenido">Id Impuesto retenido</param> /// <param name="tasa_impuesto_retenido">Tasa de Impuesto Retenido</param> /// <param name="id_impuesto_trasladado">Id Impuesto Trasladado</param> /// <param name="tasa_impuesto_trasladado">Tasa de Impuesto Trasladado</param> /// <param name="id_cargo_recurrente">Id de cargo recurrente</param> /// <param name="id_usuario">Id de Usuario</param> /// <returns></returns> public RetornoOperacion EditaFacturaConcepto(int id_factura, decimal cantidad, byte id_unidad, string identificador, int id_concepto_cobro, decimal valor_unitario, decimal importe_pesos, byte id_impuesto_retenido, decimal tasa_impuesto_retenido, byte id_impuesto_trasladado, decimal tasa_impuesto_trasladado, int id_cargo_recurrente, int id_usuario) { //Declarando Variable de Retorno RetornoOperacion result = new RetornoOperacion(); //Inicializando Bloques using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Instanciando factura using (Facturado fac = new Facturado(this._id_factura)) { //validando que exista la Factura if (fac.id_factura != 0) { //Validando que la Moneda sea dinstinto de Pesos if (fac.moneda != 1) { //Instanciando Servicio using (Documentacion.Servicio serv = new Documentacion.Servicio(fac.id_servicio)) //Instanciando Facturación Otros using (FacturacionOtros fo = FacturacionOtros.ObtieneInstanciaFactura(this._id_factura)) //Instanciando Tipo de Cambio using (Bancos.TipoCambio tc = new Bancos.TipoCambio(serv.id_compania_emisor == 0 ? fo.id_compania_emisora : serv.id_compania_emisor, (byte)fac.moneda, fac.fecha_tipo_cambio, 0)) { //Validando que exista el Tipo de Cambio if (tc.id_tipo_cambio > 0) { //Actualizando Registros result = this.actualizaRegistros(id_factura, cantidad, id_unidad, identificador, id_concepto_cobro, valor_unitario, System.Math.Round((cantidad * valor_unitario), 2, MidpointRounding.ToEven) * tc.valor_tipo_cambio, id_impuesto_retenido, tasa_impuesto_retenido, id_impuesto_trasladado, tasa_impuesto_trasladado, id_cargo_recurrente, id_usuario, this._habilitar); } else { //Instanciando Error result = new RetornoOperacion("No existe el Tipo de Cambio"); } } } else { //Actualizando Registros result = this.actualizaRegistros(id_factura, cantidad, id_unidad, identificador, id_concepto_cobro, valor_unitario, System.Math.Round((cantidad * valor_unitario), 2, MidpointRounding.ToEven), id_impuesto_retenido, tasa_impuesto_retenido, id_impuesto_trasladado, tasa_impuesto_trasladado, id_cargo_recurrente, id_usuario, this._habilitar); } //Validando que se Actualizara if (result.OperacionExitosa) { //Obteniendo Valores Totales using (DataTable dt = FacturadoConcepto.ObtieneValoresTotalesFactura(this._id_factura)) { //Validando que la tabla contenga Valores if (TSDK.Datos.Validacion.ValidaOrigenDatos(dt)) { //Recorriendo cada Fila foreach (DataRow dr in dt.Rows) { //Editando Factura result = fac.EditaFactura(Convert.ToDecimal(dr["TotalFactura"]), Convert.ToDecimal(dr["SubTotalFactura"]), Convert.ToDecimal(dr["TrasladadoFactura"]), Convert.ToDecimal(dr["RetenidoFactura"]), id_usuario); } } } } } else { //Instanciando Error result = new RetornoOperacion("No existe la factura"); } } //Validando que las Operaciones hayan sido exitosas if (result.OperacionExitosa) { //Instanciando Factura Concepto result = new RetornoOperacion(this._id_detalle_facturado); //Completando Transaccion scope.Complete(); } } //Devolviendo Resultado Obtenido return(result); }
/// <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 Público encargado de Insertar los Conceptos de las Facturas /// </summary> /// <param name="id_factura">Id de Factura</param> /// <param name="cantidad">Cantidad</param> /// <param name="id_unidad">Tipo de Unidad</param> /// <param name="identificador">Identificador</param> /// <param name="id_concepto_cobro">Concepto del Cobro</param> /// <param name="valor_unitario">Valor Unitario</param> /// <param name="importe_pesos">Importe en Pesos</param> /// <param name="tasa_impuesto_retenido">Tasa de Impuesto Retenido</param> /// <param name="tasa_impuesto_trasladado">Tasa de Impuesto Trasladado</param> /// <param name="id_cargo_recurrente"></param> /// <param name="id_usuario">Id de Usuario</param> /// <returns></returns> public static RetornoOperacion InsertaFacturaConcepto(int id_factura, decimal cantidad, byte id_unidad, string identificador, int id_concepto_cobro, decimal valor_unitario, decimal importe_pesos, byte id_impuesto_retenido, decimal tasa_impuesto_retenido, byte id_impuesto_trasladado, decimal tasa_impuesto_trasladado, int id_cargo_recurrente, int id_usuario) { //Declarando Objeto de Retorno RetornoOperacion result = new RetornoOperacion(); //Declarando Variables Auxiliares int idFacturaConcepto = 0; //Inicializando Transac using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Instanciando factura using (Facturado fac = new Facturado(id_factura)) { //validando que exista la Factura if (fac.id_factura != 0) { //Validando la Moneda if (fac.moneda != 1) { //Instanciando Servicio using (Documentacion.Servicio serv = new Documentacion.Servicio(fac.id_servicio)) //Instanciando Facturación Otros using (FacturacionOtros fo = FacturacionOtros.ObtieneInstanciaFactura(id_factura)) //Instanciando Tipo de Cambio using (Bancos.TipoCambio tc = new Bancos.TipoCambio(serv.id_compania_emisor == 0 ? fo.id_compania_emisora : serv.id_compania_emisor, (byte)fac.moneda, fac.fecha_tipo_cambio, 0)) using (SAT_CL.FacturacionElectronica33.Moneda mon = new FacturacionElectronica33.Moneda(fac.moneda)) { //Validando que existe el Tipo de Cambio if (tc.habilitar && mon.habilitar) { //Armando arreglo de parametros object[] param = { 1, 0, id_factura, cantidad, id_unidad, identificador, id_concepto_cobro, valor_unitario, 0, System.Math.Round((cantidad * valor_unitario), 2, MidpointRounding.ToEven) * tc.valor_tipo_cambio, id_impuesto_retenido, tasa_impuesto_retenido,0, id_impuesto_trasladado, tasa_impuesto_trasladado, 0, id_cargo_recurrente, id_usuario, true, "", "" }; //Obteniendo Resultado del SP result = CapaDatos.m_capaDeDatos.EjecutaProcAlmacenadoObjeto(_nom_sp, param); } else { //Instanciando Error result = new RetornoOperacion(string.Format("No existe el Tipo de Cambio del dia '{0:dd/MM/yyyy HH:mm}' de la Moneda '{1}'", fac.fecha_tipo_cambio, mon.clave)); } } } else { //Armando arreglo de parametros object[] param = { 1, 0, id_factura, cantidad, id_unidad, identificador, id_concepto_cobro, valor_unitario, 0, System.Math.Round((cantidad * valor_unitario), 2, MidpointRounding.ToEven), id_impuesto_retenido, tasa_impuesto_retenido,0, id_impuesto_trasladado, tasa_impuesto_trasladado, 0, id_cargo_recurrente, id_usuario, true, "", "" }; //Obteniendo Resultado del SP result = CapaDatos.m_capaDeDatos.EjecutaProcAlmacenadoObjeto(_nom_sp, param); } //Validando que la Operacion haya sido exitosa if (result.OperacionExitosa) { //Guardando Id del Concepto idFacturaConcepto = result.IdRegistro; //Obteniendo Valores Totales using (DataTable dt = FacturadoConcepto.ObtieneValoresTotalesFactura(id_factura)) { //Validando que la tabla contenga Valores if (TSDK.Datos.Validacion.ValidaOrigenDatos(dt)) { //Recorriendo cada Fila foreach (DataRow dr in dt.Rows) { //Editando Factura result = fac.EditaFactura(Convert.ToDecimal(dr["TotalFactura"]), Convert.ToDecimal(dr["SubTotalFactura"]), Convert.ToDecimal(dr["TrasladadoFactura"]), Convert.ToDecimal(dr["RetenidoFactura"]), 1); } } } //Validando que las Operaciones hayan sido exitosas if (result.OperacionExitosa) { //Instanciando Concepto result = new RetornoOperacion(idFacturaConcepto); //Completando la Transaccion scope.Complete(); } } } else { //Instanciando Error result = new RetornoOperacion("No existe la factura"); } } } //Devolviendo Resultado Obtenido return(result); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnAccionSustitucion_Click(object sender, EventArgs e) { //Obteniendo Control Button btn = (Button)sender; //Validando Comando switch (btn.CommandName) { case "Aceptar": { //Declarando Objeto de Retorno RetornoOperacion retorno = new RetornoOperacion(); int idUsuario = ((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario; /** Validando que Tanto la Factura como el Servicio esten seleccionado **/ //Facturas if (gvFacturacionOtros.SelectedIndex != -1) { //Servicios if (gvServicios.SelectedIndex != -1) { //Inicializando Bloque Transaccional using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Instanciando Servicio, Facturacion Otros, Comprobantes y Facturados using (FacturacionOtros fo = new FacturacionOtros(Convert.ToInt32(gvFacturacionOtros.SelectedDataKey["IdFO"]))) using (Facturado fac_fo = new Facturado(Convert.ToInt32(gvFacturacionOtros.SelectedDataKey["IdFacturado"])), fac_serv = new Facturado(Convert.ToInt32(gvServicios.SelectedDataKey["IdFacturado"]))) using (SAT_CL.Documentacion.Servicio serv = new SAT_CL.Documentacion.Servicio(Convert.ToInt32(gvServicios.SelectedDataKey["IdServicio"]))) using (SAT_CL.FacturacionElectronica33.Comprobante cfdi = new SAT_CL.FacturacionElectronica33.Comprobante(Convert.ToInt32(gvFacturacionOtros.SelectedDataKey["IdCFDI"]))) { //Validando Facturacion de Otros if (fo.habilitar && fac_fo.habilitar) { //Validando Servicio if (serv.habilitar && fac_serv.habilitar) { //Validando Facturacion Electronica if (cfdi.habilitar) { //Validando Clientes if (fo.id_cliente_receptor == serv.id_cliente_receptor) { //Deshabilitando Facturación de Otros retorno = fo.DeshabilitaFacturacionOtros(idUsuario); //Validando Operación if (retorno.OperacionExitosa) { //Deshabilitando Facturado del Servicio retorno = fac_serv.DeshabilitaFactura(idUsuario); //Validando Operación if (retorno.OperacionExitosa) { //Actualizando Facturado (FO) en Facturado (Servicio) retorno = fac_fo.ActualizaServicio(serv.id_servicio, idUsuario); //Validando Operación if (retorno.OperacionExitosa) { //Actualizando Origen del CFDI retorno = cfdi.ActualizaOrigenComprobante(SAT_CL.FacturacionElectronica33.Comprobante.OrigenDatos.Facturado, idUsuario); } } } } else { //Instanciando Excepción retorno = new RetornoOperacion("Los Clientes no coinciden"); } } else { //Instanciando Excepción retorno = new RetornoOperacion("No se puede recuperar los Datos de Facturación Electrónica"); } } else { //Instanciando Excepción retorno = new RetornoOperacion("No se puede recuperar los Datos del Servicio"); } } else { //Instanciando Excepción retorno = new RetornoOperacion("No se puede recuperar los Datos de la Facturación de Otros"); } } //Validando Operación Final if (retorno.OperacionExitosa) { //Completando Operaciones scope.Complete(); } } } else { //Instanciando Excepción retorno = new RetornoOperacion("Debe seleccionar un Servicio"); } } else { //Instanciando Excepción retorno = new RetornoOperacion("Debe seleccionar una Factura"); } //Validando operación if (retorno.OperacionExitosa) { //Ocultando Ventana Modal alternaVentana(btn, "Sustitucion"); //Recargando Busquedas buscaFacturacion(); buscaServicios(); //Inicializando Indices Controles.InicializaIndices(gvFacturacionOtros); Controles.InicializaIndices(gvServicios); } //Mostrando Mensaje de la Operación ScriptServer.MuestraNotificacion(btn, retorno, ScriptServer.PosicionNotificacion.AbajoDerecha); break; } case "Cancelar": { //Ocultando Ventana Modal alternaVentana(btn, "Sustitucion"); //Inicializando Indices Controles.InicializaIndices(gvFacturacionOtros); Controles.InicializaIndices(gvServicios); break; } } }