/// <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);
        }
Example #2
0
        /**
         * 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);
        }