protected override string DoIt()
        {
            DB.ExecuteQuery("DELETE FROM C_IncomeTaxLines WHERE C_IncomeTax_ID=" + GetRecord_ID());
            tax = new MIncomeTax(GetCtx(), GetRecord_ID(), Get_Trx());
            //qry = "SELECT ct.Rate,ta.T_Due_Acct,ev.value,ev.name FROM C_IncomeTax tx INNER JOIN C_Tax ct ON (tx.C_Tax_ID=ct.C_Tax_ID) INNER JOIN C_Tax_Acct ta ON (tx.C_Tax_ID = ta.C_Tax_ID) inner join c_validCombination ac on(ta.T_Due_Acct=ac.c_validCombination_id) inner join C_elementvalue ev on(ac.Account_ID=ev.C_elementvalue_id) WHERE tx.C_IncomeTax_ID=" + GetRecord_ID() + " and tx.ad_client_id=" + GetAD_Client_ID();
            qry = "SELECT ct.Rate,ta.IncomeSummary_Acct,ev.value,ev.name FROM C_IncomeTax tx INNER JOIN C_Tax ct ON (tx.C_Tax_ID=ct.C_Tax_ID) INNER JOIN C_AcctSchema_GL ta ON (tx.AD_Client_ID = ta.AD_Client_ID) inner join c_validCombination ac on(ta.IncomeSummary_Acct=ac.c_validCombination_id) inner join C_elementvalue ev on(ac.Account_ID=ev.C_elementvalue_id) WHERE tx.C_IncomeTax_ID=" + GetRecord_ID() + " and tx.ad_client_id=" + GetAD_Client_ID();
            ds  = DB.ExecuteDataset(qry, null, Get_Trx());
            if (ds != null)
            {
                if (ds.Tables[0].Rows.Count > 0)
                {
                    rate      = Util.GetValueOfDecimal(ds.Tables[0].Rows[0]["Rate"]);
                    taxAmount = tax.GetProfitBeforeTax() * rate / 100;
                    acct_Comb = Util.GetValueOfInt(ds.Tables[0].Rows[0]["IncomeSummary_Acct"]);
                    tLine     = new MIncomeTaxLines(GetCtx(), 0, Get_Trx());
                    tLine.SetAD_Client_ID(GetAD_Client_ID());
                    tLine.SetAD_Org_ID(GetCtx().GetAD_Org_ID());
                    tLine.SetC_IncomeTax_ID(GetRecord_ID());
                    tLine.SetC_Tax_ID(tax.GetC_Tax_ID());
                    tLine.SetC_IncomeTax_Acct(acct_Comb);
                    tLine.SetC_ProfitAndLoss_ID(tax.GetC_ProfitAndLoss_ID());
                    tLine.SetIncomeTaxAmount(taxAmount);
                    tLine.SetLedgerCode(Util.GetValueOfString(ds.Tables[0].Rows[0]["value"]));
                    tLine.SetLedgerName(Util.GetValueOfString(ds.Tables[0].Rows[0]["name"]));
                    if (!tLine.Save())
                    {
                        ds.Dispose();
                        return(GetRetrievedError(tLine, "TaxLinesNotSaved"));
                        //return Msg.GetMsg(GetCtx(), "TaxLinesNotSaved");
                    }

                    tax.SetIncomeTaxAmount(taxAmount);
                    tax.SetProfitAfterTax(tax.GetProfitBeforeTax() - taxAmount);
                    if (!tax.Save())
                    {
                        ds.Dispose();
                        Rollback();
                        return(GetRetrievedError(tax, "TaxNotSaved"));
                        //return Msg.GetMsg(GetCtx(), "TaxNotSaved");
                    }
                    ds.Dispose();
                    return(Msg.GetMsg(GetCtx(), "LinesGenerated"));
                }
            }
            return(Msg.GetMsg(GetCtx(), "RecordNotFound"));
        }
Esempio n. 2
0
        private DocLine[] LoadLines(MIncomeTax tax)
        {
            List <DocLine> list = new List <DocLine>();

            MIncomeTaxLines[] lines = tax.GetLines(false);
            for (int i = 0; i < lines.Length; i++)
            {
                MIncomeTaxLines line    = lines[i];
                DocLine         docLine = new DocLine(line, this);
                //docLine.SetAmount(line.GetIncomeTaxAmount());
                //
                list.Add(docLine);
            }

            //	Return Array
            DocLine[] dls = new DocLine[list.Count];
            dls = list.ToArray();
            return(dls);
        }
Esempio n. 3
0
        /// <summary>
        /// Create Facts (the accounting logic) for
        /// </summary>
        /// <param name="?"></param>
        /// <returns>Fact</returns>
        public override List <Fact> CreateFacts(MAcctSchema as1)
        {
            //  create Fact Header
            List <Fact> facts = new List <Fact>();

            if (GetDocumentType().Equals(MDocBaseType.DOCBASETYPE_INCOMETAX))
            {
                //	Decimal grossAmt = getAmount(Doc.AMTTYPE_Gross);
                //  Commitment
                Fact    fact   = new Fact(this, as1, Fact.POST_Actual);
                Decimal total  = Env.ZERO;
                Decimal amount = Env.ZERO;

                for (int i = 0; i < _lines.Length; i++)
                {
                    DocLine         dline = _lines[i];
                    MIncomeTaxLines line  = new MIncomeTaxLines(GetCtx(), dline.Get_ID(), null);
                    amount = Util.GetValueOfDecimal(line.GetIncomeTaxAmount());
                    if (amount != Env.ZERO)
                    {
                        total = Decimal.Add(total, amount);
                    }

                    //	Account
                    MAccount expense = MAccount.Get(GetCtx(), line.GetC_IncomeTax_Acct());
                    fact.CreateLine(dline, expense, GetC_Currency_ID(), amount);
                }

                if (total != Env.ZERO)
                {
                    int      validComID = Util.GetValueOfInt(DB.ExecuteScalar(@"SELECT T_Due_Acct FROM C_Tax_Acct WHERE C_AcctSchema_ID=" + as1.GetC_AcctSchema_ID() + " AND AD_Client_ID = " + GetAD_Client_ID()));
                    MAccount acct       = MAccount.Get(GetCtx(), validComID);
                    fact.CreateLine(null, acct, GetC_Currency_ID(), Decimal.Negate(total));
                }

                facts.Add(fact);
            }
            return(facts);
        }
Esempio n. 4
0
        private DocLine[] LoadLines(MIncomeTax tax)
        {
            List <DocLine> list = new List <DocLine>();

            MIncomeTaxLines[] lines = tax.GetLines(false);
            for (int i = 0; i < lines.Length; i++)
            {
                MIncomeTaxLines line    = lines[i];
                DocLine         docLine = new DocLine(line, this);
                //docLine.SetAmount(line.GetIncomeTaxAmount());

                // set primary key value
                docLine.SetPrimaryKeyValue(line.GetC_IncomeTaxLines_ID());
                // set GL journal line table ID
                docLine.SetLineTable_ID(line.Get_Table_ID());
                //
                list.Add(docLine);
            }

            //	Return Array
            DocLine[] dls = new DocLine[list.Count];
            dls = list.ToArray();
            return(dls);
        }