/// <summary> /// Envia los cambios del tfi_AuditoriaControlCajasDetDataset.tfi_AuditoriaControlCajasDetDataTable a la base de datos. /// </summary> public static void Update(tfi_AuditoriaControlCajasDetDataset.tfi_AuditoriaControlCajasDetDataTable dataTable) { ApplicationAssert.Check(dataTable != null, "El argumento dataTable no debe ser nulo.", ApplicationAssert.LineNumber); ApplicationAssert.Check(dataTable.Rows.Count > 0, "El argumento dataTable debe poseer alguna fila.", ApplicationAssert.LineNumber); mz.erp.dataaccess.tfi_AuditoriaControlCajasDet.Update(dataTable); }
/** * Devuelve un string indicando el motivo por el cual no se puede cerrar la caja o el string vacio si * se puede cerrar la misma. **/ public string PuedeCerrarCaja(string IdInstanciaCaja) { string mje = string.Empty; bool ok = true; //Obtengo la ultima auditoria para esa caja tfi_AuditoriaControlCajasDataset.tfi_AuditoriaControlCajasRow rowA = tfi_AuditoriaControlCajas.GetUltimoControl(IdInstanciaCaja); ok = rowA != null; if (ok) //Si hubo un control { long IdAuditoria = rowA.IdAuditoria; DateTime fechaUltimoControl = rowA.Fecha; //Obtengo los movimientos posteriores a la fecha del ultimo control DataSet movPost = reportes.ReportsFactory.GetMovimientosDeCajaPosterioresA(fechaUltimoControl, IdInstanciaCaja); ok = movPost.Tables[0].Rows.Count == 0; if (ok) //Si no existen movimientos posteriores { tfi_AuditoriaControlCajasDetDataset.tfi_AuditoriaControlCajasDetDataTable tableDet = tfi_AuditoriaControlCajasDet.GetByIdAuditoria(IdAuditoria).tfi_AuditoriaControlCajasDet; //Me fijo si el ultimo control fue exitoso int i = 0; while (ok && i < tableDet.Rows.Count) { tfi_AuditoriaControlCajasDetDataset.tfi_AuditoriaControlCajasDetRow rowD = (tfi_AuditoriaControlCajasDetDataset.tfi_AuditoriaControlCajasDetRow)tableDet.Rows[i]; //Si son cupones y el monto total coincide se puede cerrar solo si la cantidad informada es menor o igual a la que figura en el sistema if (MAPStaticInfo.PerteneceAControlDeCajasFamiliasTarjeta(rowD.IdControlDeCajasFamiliasComprobanteTesoreria)) { ok = !rowD.CodigoCalidadMonto && rowD.CantidadInformada <= rowD.CantidadSistema; } //Si son cheques debe concidir tanto el monto total como la cantidad //Entra al caso default /*else if(MAPStaticInfo.PerteneceACheque(rowD.IdTDCompTesoreria))//Cheques * { * ok = !rowD.CodigoCalidadMonto && !rowD.CodigoCalidadCantidad; * }*/ //Si es efectivo debe concidir el monto sin importar la cantidad else if (MAPStaticInfo.PerteneceAControlDeCajasFamiliasEfectivo(rowD.IdControlDeCajasFamiliasComprobanteTesoreria)) //Efectivo { ok = !rowD.CodigoCalidadMonto; } else //Por defecto debe concidir tanto el monto total como la cantidad { ok = !rowD.CodigoCalidadMonto && !rowD.CodigoCalidadCantidad; } i++; } if (!ok) //el ultimo control no fue exitoso { mje = "el último control no fue exitoso"; } } else // existen movimientos posteriores { mje = "se han realizado movimientos posteriores al último control"; } } else //No hubo ningun control { mje = "no se realizó ningún control"; } return(mje); }