private void BorrarMovimiento(DataGridViewRow oFila) { bool bEliminar = false; if (Util.Logico(oFila.Cells["con_FueManual"].Value)) { if (UtilLocal.MensajePreguntaCancelar("¿Estás seguro que deseas eliminar el movimiento seleccionado?") == DialogResult.Yes) { bEliminar = true; } } else { if (oFila.DefaultCellStyle.ForeColor != Color.Green) { // Se valida el permiso var oResU = UtilLocal.ValidarObtenerUsuario("Bancos.Movimientos.Borrar"); if (oResU.Error) { return; } bEliminar = true; } } if (bEliminar) { int iMovID = Util.Entero(oFila.Cells["con_BancoCuentaMovimientoID"].Value); ContaProc.EliminarMovimientoBancario(iMovID); this.LlenarConciliaciones(); } }
private void btnConGuardar_Click(object sender, EventArgs e) { if (UtilLocal.MensajePreguntaCancelar("¿Estás seguro que deseas realizar las conciliaciones especificadas?") == DialogResult.Yes) { this.GuardarConciliacion(); } }
private void DesagruparMovimientos(int iMovAgrupadorID) { var oMovsGrupo = Datos.GetListOf <BancoCuentaMovimiento>(c => c.MovimientoAgrupadorID == iMovAgrupadorID); if (oMovsGrupo.Count > 0) { if (UtilLocal.MensajePreguntaCancelar("¿Estás seguro que deseas desagrupar el movimiento seleccionado?") != DialogResult.Yes) { return; } } else { return; } Cargando.Mostrar(); // Se desagrupan los movimientos DateTime dMenor = DateTime.MaxValue; foreach (var oReg in oMovsGrupo) { oReg.MovimientoAgrupadorID = null; Datos.Guardar <BancoCuentaMovimiento>(oReg); if (dMenor > oReg.FechaAsignado) { dMenor = oReg.FechaAsignado.Valor(); } } // Se borra el movimiento agrupador var oMov = Datos.GetEntity <BancoCuentaMovimiento>(c => c.BancoCuentaMovimientoID == iMovAgrupadorID); Datos.Eliminar <BancoCuentaMovimiento>(oMov); // Se reajustan los saldos this.RecalcularAcumulado(dMenor); Cargando.Cerrar(); // Se actualizan los datos this.LlenarConciliaciones(); }
private bool AccionAceptar() { // Cargando.Mostrar(); decimal mFaltante = 0; int iClienteID = 0; int iCobroVentaID = 0; bool bUsarCascosAFavor = false; bool bCrearVale = false; bool bCascoAFavor = false; int iCascoRecibido = Util.Entero(this.cmbCascoRecibido.SelectedValue); int iSucursalID = GlobalClass.SucursalID; int iCascoRegistroID = this.oCascoRegistro.CascoRegistroID; int iParteID = this.oCascoRegistro.ParteID; var oParte = Datos.GetEntity <Parte>(c => c.ParteID == iParteID && c.Estatus); var oVenta = Datos.GetEntity <Venta>(c => c.VentaID == this.oCascoRegistro.VentaID && c.Estatus); iClienteID = oVenta.ClienteID; var oCliente = Datos.GetEntity <Cliente>(c => c.ClienteID == oVenta.ClienteID && c.Estatus); if (iCascoRecibido != oParte.RequiereCascoDe) { // Si se recibió algún casco if (iCascoRecibido > 0) { // Se obtienen el importe requerido var oPrecioReq = Datos.GetEntity <PartePrecio>(c => c.ParteID == oParte.RequiereCascoDe && c.Estatus); var oPrecioRec = Datos.GetEntity <PartePrecio>(c => c.ParteID == iCascoRecibido && c.Estatus); if (oPrecioReq == null || oPrecioRec == null) { UtilLocal.MensajeAdvertencia("Hubo un error al obtener el Casco requerido."); return(false); } // Se calcula el importe faltante decimal?[] aPreciosReq = new decimal?[5] { oPrecioReq.PrecioUno, oPrecioReq.PrecioDos, oPrecioReq.PrecioTres, oPrecioReq.PrecioCuatro, oPrecioReq.PrecioCinco }; decimal?[] aPreciosRec = new decimal?[5] { oPrecioRec.PrecioUno, oPrecioRec.PrecioDos, oPrecioRec.PrecioTres, oPrecioRec.PrecioCuatro, oPrecioRec.PrecioCinco }; mFaltante = (aPreciosReq[oCliente.ListaDePrecios - 1] - aPreciosRec[oCliente.ListaDePrecios - 1]).Valor(); // Se evalúa el importe faltante, para tomar alguna acción if (mFaltante != 0) { // Si el casco recibido es menor que el casco esperado if (mFaltante > 0) { // Se busca por folio de cobro o por cascos a favor, según sea el caso if (this.txtFolioDeCobro.Text == "") { decimal mTotalAFavor = Util.Decimal(this.lblTotalAFavor.Text); if (mTotalAFavor != mFaltante) { UtilLocal.MensajeAdvertencia("El importe seleccionado con los Cascos a favor debe ser de " + mFaltante.ToString(GlobalClass.FormatoMoneda)); return(false); } bUsarCascosAFavor = true; } else { // Se obtiene el importe de la venta var oVentaCobroV = Datos.GetEntity <VentasView>(c => c.Folio == this.txtFolioDeCobro.Text && c.SucursalID == GlobalClass.SucursalID && (c.VentaEstatusID == Cat.VentasEstatus.Cobrada || c.VentaEstatusID == Cat.VentasEstatus.Completada)); if (oVentaCobroV == null) { UtilLocal.MensajeAdvertencia("La venta específicada no existe, no es de esta sucursal o no ha sido cobrada."); return(false); } iCobroVentaID = oVentaCobroV.VentaID; // Se valida que la parte de la venta sea una "diferencia de casco" if (!Datos.Exists <VentaDetalle>(c => c.VentaID == iCobroVentaID && c.ParteID == Cat.Partes.DiferenciaDeCascos && c.Estatus)) { UtilLocal.MensajeAdvertencia("La venta especificada no corresponde a una Diferencia de Casco."); return(false); } // Se valida que el importe cobrado sea el correspondiente if (oVentaCobroV.Total != mFaltante) { UtilLocal.MensajeAdvertencia("El cobro por la diferencia debe de ser de " + mFaltante.ToString(GlobalClass.FormatoMoneda)); return(false); } } } // Si el casco recibido es mayor que el casco esperado else if (mFaltante < 0) { var oRes = UtilLocal.MensajePreguntaCancelar("El importe del casco recibido es mayor al esperado. ¿Deseas crear un Vale a favor del Cliente?"); if (oRes == DialogResult.Cancel) { return(false); } bCrearVale = (oRes == DialogResult.Yes); bCascoAFavor = !bCrearVale; } } } else // Si no se recibió ningún casco, se evalúa la venta { // Se obtiene la VentaID var oVentaCobro = Datos.GetEntity <Venta>(c => c.Folio == this.txtFolioDeCobro.Text && c.SucursalID == GlobalClass.SucursalID && (c.VentaEstatusID == Cat.VentasEstatus.Cobrada || c.VentaEstatusID == Cat.VentasEstatus.Completada) && c.Estatus); if (oVentaCobro == null) { UtilLocal.MensajeAdvertencia("La venta específicada no existe, no es de esta sucursal o no ha sido cobrada."); return(false); } iCobroVentaID = oVentaCobro.VentaID; // Se valida que la venta tenga la Parte correspondiente al casco if (!Datos.Exists <VentaDetalle>(c => c.VentaID == iCobroVentaID && c.ParteID == oParte.RequiereDepositoDe && c.Estatus)) { UtilLocal.MensajeAdvertencia("El cobro del Casco no corresonde al Artículo."); return(false); } } } // Cargando.Cerrar(); // Se solicita la contraseña var oResU = UtilLocal.ValidarObtenerUsuario("Ventas.ControlDeCascos.Completar"); if (oResU.Error) { return(false); } Cargando.Mostrar(); // Se completa el registro de casco DateTime dAhora = DateTime.Now; // Se registran y modifican los Cascos a favor usados, si aplica if (bUsarCascosAFavor) { foreach (DataGridViewRow oFila in this.dgvImportesAFavor.Rows) { if (Util.Logico(oFila.Cells["Sel"].Value)) { // Se registra el importe usado para el CascoImporte int iCascoImporteID = Util.Entero(oFila.Cells["CascoImporteID"].Value); decimal mAUsar = Util.Decimal(oFila.Cells["ImporteAUsar"].Value); var oCascoImporte = Datos.GetEntity <CascoImporte>(c => c.CascoImporteID == iCascoImporteID); oCascoImporte.ImporteUsado += mAUsar; Datos.Guardar <CascoImporte>(oCascoImporte); // Se registra la relación entre el CascoRegistro y el CascoImporte var oCascoRegImp = new CascoRegistroImporte() { CascoRegistroID = this.oCascoRegistro.CascoRegistroID, CascoImporteID = oCascoImporte.CascoImporteID, Importe = mAUsar }; Datos.Guardar <CascoRegistroImporte>(oCascoRegImp); } } } // Se crea el vale, si aplica if (bCrearVale) { var oRes = VentasProc.GenerarNotaDeCredito(iClienteID, (mFaltante * -1), "", Cat.OrigenesNotaDeCredito.CascoDeMayorValor , this.oCascoRegistro.CascoRegistroID); // Se crea la póliza contable (AfeConta) ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.ValeDirecto, oRes.Respuesta, oCliente.Nombre, "POR CASCO MAYOR"); // Se manda a imprimir el ticket VentasLoc.GenerarTicketNotaDeCredito(oRes.Respuesta); } // Se registra el casco a favor, si aplica if (bCascoAFavor) { var oCascoImporte = new CascoImporte() { Fecha = dAhora, OrigenID = this.oCascoRegistro.CascoRegistroID, Importe = (mFaltante * -1) }; Datos.Guardar <CascoImporte>(oCascoImporte); } // Se afecta la existencia y el kárdex del casco recibido if (iCascoRecibido > 0) { var oSucursal = Datos.GetEntity <Sucursal>(c => c.SucursalID == iSucursalID && c.Estatus); var oPrecioRec = Datos.GetEntity <PartePrecio>(c => c.ParteID == iCascoRecibido && c.Estatus); AdmonProc.AfectarExistenciaYKardex(iCascoRecibido, GlobalClass.SucursalID, Cat.OperacionesKardex.EntradaInventario, iCascoRegistroID.ToString() , oResU.Respuesta.UsuarioID, oCliente.Nombre, "CONTROL DE CASCOS", oSucursal.NombreSucursal, 1, oPrecioRec.Costo.Valor() , Cat.Tablas.CascoRegistro, iCascoRegistroID); } // Se guardan los datos del registro de casco this.oCascoRegistro.RecibidoCascoID = (iCascoRecibido > 0 ? (int?)iCascoRecibido : null); this.oCascoRegistro.RealizoUsuarioID = oResU.Respuesta.UsuarioID; this.oCascoRegistro.CobroVentaID = (iCobroVentaID > 0 ? (int?)iCobroVentaID : null); Datos.Guardar <CascoRegistro>(this.oCascoRegistro); // Se manda a imprimir el ticket correspondiente var oCascoRegV = Datos.GetEntity <CascosRegistrosView>(c => c.CascoRegistroID == iCascoRegistroID); var oRep = new Report(); oRep.Load(GlobalClass.ConfiguracionGlobal.pathReportes + "ControlDeCascos.frx"); VentasLoc.TicketAgregarLeyendas(ref oRep); oRep.RegisterData(new List <CascosRegistrosView>() { oCascoRegV }, "ControlDeCasco"); UtilLocal.EnviarReporteASalida("Reportes.ControlDeCascos.Completar.Salida", oRep); Cargando.Cerrar(); UtilLocal.MostrarNotificacion("Control de casco completado correctamente."); return(true); }