Ejemplo n.º 1
0
    public bool AsignarNumeroContab(_AsientoContable AsientoContable, out string sErrMessage)
    {
        sErrMessage = "";


        // Determinamos un número Contab para el asiento contable pasado a esta función
        // y lo asignamos al asiento que fue grabado previamente (con un número negativo)

        if (AsientoContable.Numero > 0)
        {
            sErrMessage = "Aparentemente, ya Ud. asignó un número <i>Contab</i> a este comprobante, pues su número <b>no es</b> negativo.<br />" +
                          "Esta función debe ser ejecutada para obtener números <i>Contab</i> para comprobantes cuyo número es negativo.";
            return(false);
        }

        int nNumeroNegativoAnterior = AsientoContable.Numero.Value;

        int nNumeroAsientoContab = 0;

        if (!ObtenerNumeroContab(AsientoContable.Fecha, AsientoContable.CiaContab,
                                 AsientoContable.Tipo, out sErrMessage, out nNumeroAsientoContab))
        {
            return(false);
        }

        // ahora actualizamos TRES tablas con el número determinado: asientos, dasientos y tTemp...

        ContabSysNet_Web.ModelosDatos.Asiento MyAsientoContable = (from a in _dbContab.Asientos
                                                                   where a.Numero == AsientoContable.Numero &&
                                                                   a.Mes == AsientoContable.Fecha.Month &&
                                                                   a.Ano == AsientoContable.Fecha.Year &&
                                                                   a.Cia == AsientoContable.CiaContab
                                                                   select a).SingleOrDefault();



        if (MyAsientoContable == null)
        {
            sErrMessage = "Aparentemente, Ud. no ha registrado aún el asiento contable.<br />" +
                          "Construya y registre el asiento contable primero y luego regrese a esta función para intentar asignarle un número Contab.";
            return(false);
        }

        List <ContabSysNet_Web.ModelosDatos.dAsiento> MyAsientoContable_Partidas = (from a in _dbContab.dAsientos
                                                                                    where a.NumeroAutomatico == AsientoContable.NumeroAutomatico
                                                                                    select a).ToList();

        MyAsientoContable.Numero = Convert.ToInt16(nNumeroAsientoContab);

        try
        {
            _dbContab.SubmitChanges();
        }
        catch (Exception ex)
        {
            sErrMessage = "... se ha producido un error al intentar efectuar una operación en la base de datos. <br />" +
                          "El mensaje específico de error es: <br /><br />" +
                          ex.Message;
            return(false);
        }

        AsientoContable.Numero = nNumeroAsientoContab;
        return(true);
    }
Ejemplo n.º 2
0
    public bool GrabarAsientoContable(_AsientoContable AsientoContable, out string sErrMessage,
                                      string sUserName)
    {
        sErrMessage = "";


        // Grabamos el asiento pasado a esta función a la tabla de asientos y partidas; nótese como
        // usamos un número negativo como número del asiento; en un proximo paso, el usuario asignará
        // números Contab a los asientos de la lista

        // intentamos registrar el asiento. Nótese que el asiento preparado para el asiento fue leído en
        // AsientoContable (arriba usando Linq)

        // lo primero que hacemos es obtener un ClaveUnica para el asiento y un número negativo

        int nNumeroNegativoAsientoContable = 0;

        if (!ObtenerNumeroNegativoAsiento(AsientoContable.Fecha, AsientoContable.CiaContab,
                                          out sErrMessage, out nNumeroNegativoAsientoContable))
        {
            return(false);
        }

        int nPKAsientoContable = 0;

        if (!ObtenerClaveUnicaAsiento(out sErrMessage, out nPKAsientoContable))
        {
            return(false);
        }

        AsientoContable.Numero           = nNumeroNegativoAsientoContable;
        AsientoContable.NumeroAutomatico = nPKAsientoContable;


        ContabSysNet_Web.ModelosDatos.Asiento MyAsientoContable = new ContabSysNet_Web.ModelosDatos.Asiento();

        MyAsientoContable.NumeroAutomatico = nPKAsientoContable;

        MyAsientoContable.Fecha     = AsientoContable.Fecha;
        MyAsientoContable.Numero    = Convert.ToInt16(nNumeroNegativoAsientoContable);
        MyAsientoContable.Mes       = Convert.ToByte(AsientoContable.Fecha.Month);
        MyAsientoContable.Ano       = Convert.ToInt16(AsientoContable.Fecha.Year);
        MyAsientoContable.MesFiscal = AsientoContable.MesFiscal.Value;
        MyAsientoContable.AnoFiscal = AsientoContable.AnoFiscal.Value;
        MyAsientoContable.Tipo      = AsientoContable.Tipo;

        if (AsientoContable.Descripcion.Length > 250)
        {
            MyAsientoContable.Descripcion = AsientoContable.Descripcion.ToString().Substring(0, 50);
        }
        else
        {
            MyAsientoContable.Descripcion = AsientoContable.Descripcion;
        }

        //MyAsientoContable.NumPartidas = 0;
        //MyAsientoContable.TotalDebe = 0;
        //MyAsientoContable.TotalHaber = 0;

        MyAsientoContable.Moneda         = AsientoContable.Moneda;
        MyAsientoContable.MonedaOriginal = AsientoContable.Moneda;
        MyAsientoContable.FactorDeCambio = AsientoContable.FactorCambio.Value;

        MyAsientoContable.ConvertirFlag = true;
        MyAsientoContable.ProvieneDe    = AsientoContable.ProvieneDe;
        MyAsientoContable.Ingreso       = DateTime.Now;
        MyAsientoContable.UltAct        = DateTime.Now;
        MyAsientoContable.Usuario       = sUserName;
        MyAsientoContable.Cia           = AsientoContable.CiaContab;

        _dbContab.Asientos.InsertOnSubmit(MyAsientoContable);

        try
        {
            _dbContab.SubmitChanges();
        }
        catch (Exception ex)
        {
            sErrMessage = "... se ha producido un error al intentar efectuar una operación en la base de datos. <br />" +
                          "El mensaje específico de error es: <br /><br />" +
                          ex.Message;
            return(false);
        }

        // grabar partidas a dAsientos

        // ahora que registramos el asiento, registramos sus partidas

        ContabSysNet_Web.ModelosDatos.dAsiento        MyPartidaAsiento;
        List <ContabSysNet_Web.ModelosDatos.dAsiento> MyPartidaAsiento_List = new List <ContabSysNet_Web.ModelosDatos.dAsiento>();

        decimal nTotalDebe        = 0;
        decimal nTotalHaber       = 0;
        short   nNumeroPartida    = 0;
        int     nCantidadPartidas = AsientoContable.Partidas.Count();

        foreach (var wMyPartidaAsiento in AsientoContable.Partidas)
        {
            nNumeroPartida  += 10;
            MyPartidaAsiento = new ContabSysNet_Web.ModelosDatos.dAsiento();

            MyPartidaAsiento.NumeroAutomatico = nPKAsientoContable;

            //MyPartidaAsiento.Fecha = AsientoContable.Fecha;
            //MyPartidaAsiento.Numero = Convert.ToInt16(nNumeroNegativoAsientoContable);
            //MyPartidaAsiento.Mes = Convert.ToByte(AsientoContable.Fecha.Month);
            //MyPartidaAsiento.Ano = Convert.ToInt16(AsientoContable.Fecha.Year);
            //MyPartidaAsiento.MesFiscal = AsientoContable.MesFiscal.Value;
            //MyPartidaAsiento.AnoFiscal = AsientoContable.AnoFiscal.Value;

            MyPartidaAsiento.Partida = nNumeroPartida;
            //MyPartidaAsiento.Cuenta = wMyPartidaAsiento.CuentaContable;

            if (wMyPartidaAsiento.Referencia.Length > 20)
            {
                MyPartidaAsiento.Referencia = wMyPartidaAsiento.Referencia.ToString().Substring(0, 20);
            }
            else
            {
                MyPartidaAsiento.Referencia = wMyPartidaAsiento.Referencia;
            }

            if (wMyPartidaAsiento.Descripcion.Length > 50)
            {
                MyPartidaAsiento.Descripcion = wMyPartidaAsiento.Descripcion.ToString().Substring(0, 50);
            }
            else
            {
                MyPartidaAsiento.Descripcion = wMyPartidaAsiento.Descripcion;
            }

            MyPartidaAsiento.Debe  = wMyPartidaAsiento.Debe;
            MyPartidaAsiento.Haber = wMyPartidaAsiento.Haber;

            //MyPartidaAsiento.Moneda = AsientoContable.Moneda;
            //MyPartidaAsiento.MonedaOriginal = AsientoContable.Moneda;
            //MyPartidaAsiento.FactorDeCambio = AsientoContable.FactorCambio.Value;
            //MyPartidaAsiento.ConvertirFlag = true;

            //MyPartidaAsiento.Cia = AsientoContable.CiaContab;

            nTotalDebe  += wMyPartidaAsiento.Debe;
            nTotalHaber += wMyPartidaAsiento.Haber;

            MyPartidaAsiento_List.Add(MyPartidaAsiento);
        }

        _dbContab.dAsientos.InsertAllOnSubmit(MyPartidaAsiento_List);

        try
        {
            _dbContab.SubmitChanges();
        }
        catch (Exception ex)
        {
            sErrMessage = "... se ha producido un error al intentar efectuar una operación en la base de datos. <br />" +
                          "El mensaje específico de error es: <br /><br />" +
                          ex.Message;
            return(false);
        }


        // actualizar items: NumPartidas, TotalDebe y TotalHaber en Asientos

        ContabSysNet_Web.ModelosDatos.Asiento AsientoContab = (from a in _dbContab.Asientos
                                                               where a.NumeroAutomatico == nPKAsientoContable
                                                               select a).FirstOrDefault();

        if (AsientoContab == null)
        {
            sErrMessage = "... se ha producido un error al intentar efectuar una operación en la base de datos. <br />" +
                          "No se encontró el asiento contable recién registrado para su modificación.";
            return(false);
        }

        //AsientoContab.NumPartidas = Convert.ToInt16(nCantidadPartidas);
        //AsientoContab.TotalDebe = nTotalDebe;
        //AsientoContab.TotalHaber = nTotalHaber;

        try
        {
            _dbContab.SubmitChanges();
        }
        catch (Exception ex)
        {
            sErrMessage = "... se ha producido un error al intentar efectuar una operación en la base de datos. <br />" +
                          "El mensaje específico de error es: <br /><br />" +
                          ex.Message;
            return(false);
        }


        return(true);
    }