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")); }
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); }
/// <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); }
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); }