/**
   * Parent Constructor
   *
   * @param invoice invoice
   * @param paySchedule payment schedule
   */
  public MInvoicePaySchedule(MInvoice invoice, MPaySchedule paySchedule) {
    super(invoice.getCtx(), 0, invoice.get_TrxName());
    m_parent = invoice;
    setClientOrg(invoice);
    setC_Invoice_ID(invoice.getC_Invoice_ID());
    setC_PaySchedule_ID(paySchedule.getC_PaySchedule_ID());

    //	Amounts
    int scale = MCurrency.getStdPrecision(getCtx(), invoice.getC_Currency_ID());
    BigDecimal due = invoice.getGrandTotal();
    if (due.compareTo(Env.ZERO) == 0) {
      setDueAmt(Env.ZERO);
      setDiscountAmt(Env.ZERO);
      setIsValid(false);
    } else {
      due =
          due.multiply(paySchedule.getPercentage())
              .divide(HUNDRED, scale, BigDecimal.ROUND_HALF_UP);
      setDueAmt(due);
      BigDecimal discount =
          due.multiply(paySchedule.getDiscount()).divide(HUNDRED, scale, BigDecimal.ROUND_HALF_UP);
      setDiscountAmt(discount);
      setIsValid(true);
    }

    //	Dates
    Timestamp dueDate = TimeUtil.addDays(invoice.getDateInvoiced(), paySchedule.getNetDays());
    setDueDate(dueDate);
    Timestamp discountDate =
        TimeUtil.addDays(invoice.getDateInvoiced(), paySchedule.getDiscountDays());
    setDiscountDate(discountDate);
  } //	MInvoicePaySchedule
 /**
  * Parent Constructor
  *
  * @param parent parent
  * @param invoice invoice
  * @param tLine tax line
  */
 public MTaxDeclarationLine(MTaxDeclaration parent, MInvoice invoice, MInvoiceTax tLine) {
   this(parent.getCtx(), 0, parent.get_TrxName());
   setClientOrg(invoice);
   setC_TaxDeclaration_ID(parent.getC_TaxDeclaration_ID());
   setIsManual(false);
   //
   setC_Invoice_ID(invoice.getC_Invoice_ID());
   setC_BPartner_ID(invoice.getC_BPartner_ID());
   setC_Currency_ID(invoice.getC_Currency_ID());
   setDateAcct(invoice.getDateAcct());
   //
   setC_Tax_ID(tLine.getC_Tax_ID());
   setTaxBaseAmt(tLine.getTaxBaseAmt());
   setTaxAmt(tLine.getTaxAmt());
 } //	MTaxDeclarationLine
 /**
  * Parent Constructor
  *
  * @param parent parent
  * @param invoice invoice
  * @param iLine invoice line
  */
 public MTaxDeclarationLine(MTaxDeclaration parent, MInvoice invoice, MInvoiceLine iLine) {
   this(parent.getCtx(), 0, parent.get_TrxName());
   setClientOrg(invoice);
   setC_TaxDeclaration_ID(parent.getC_TaxDeclaration_ID());
   setIsManual(false);
   //
   setC_Invoice_ID(invoice.getC_Invoice_ID());
   setC_BPartner_ID(invoice.getC_BPartner_ID());
   setC_Currency_ID(invoice.getC_Currency_ID());
   setDateAcct(invoice.getDateAcct());
   //
   setC_InvoiceLine_ID(iLine.getC_InvoiceLine_ID());
   setC_Tax_ID(iLine.getC_Tax_ID());
   if (invoice.isTaxIncluded()) {
     setTaxBaseAmt(iLine.getLineNetAmt());
     setTaxAmt(iLine.getTaxAmt());
   } else {
     setTaxBaseAmt(iLine.getLineNetAmt());
     setTaxAmt(iLine.getTaxAmt());
   }
 } //	MTaxDeclarationLine