Search in sources :

Example 91 with MBPartner

use of org.compiere.model.MBPartner in project lar_361 by comitsrl.

the class SubOrder method setC_BPartner_ID.

// findBPartner
/**
 ************************************************************************
 * Set BPartner
 *
 * @param C_BPartner_ID
 *            id
 */
public void setC_BPartner_ID(int C_BPartner_ID) {
    log.info("C_BPartner_ID=" + C_BPartner_ID);
    if (C_BPartner_ID == 0) {
        m_bpartner = null;
        m_C_BPartner_Location_ID = 0;
    } else {
        m_bpartner = new MBPartner(p_ctx, C_BPartner_ID, null);
        if (m_bpartner.get_ID() == 0) {
            m_bpartner = null;
            m_C_BPartner_Location_ID = 0;
        }
    }
    // Set Info
    if (m_bpartner != null) {
        f_bpName.setText(m_bpartner.getName());
    } else {
        f_bpName.setText(null);
    }
    // Sets Currency
    m_M_PriceList_Version_ID = 0;
    getM_PriceList_Version_ID();
    // fillCombos();
    if (p_posPanel.m_order != null && m_bpartner != null) {
        // added by ConSerTi to update the client in the request
        p_posPanel.m_order.setBPartner(m_bpartner);
        p_posPanel.m_order.setC_BPartner_Location_ID(m_C_BPartner_Location_ID);
        p_posPanel.f_curLine.updateTable(p_posPanel.m_order);
    }
}
Also used : MBPartner(org.compiere.model.MBPartner)

Example 92 with MBPartner

use of org.compiere.model.MBPartner in project lar_361 by comitsrl.

the class FiscalDocumentPrint method getCustomer.

/**
 * Crea un <code>Customer</code> a partir de una entidad comercial.
 * @param bPartnerID ID de la entidad comercial.
 * @return el cliente correspondiente.
 */
public Customer getCustomer(int bPartnerID) {
    // TODO - Review this implementation
    MBPartner bPartner = new MBPartner(Env.getCtx(), bPartnerID, getTrxName());
    Customer customer = new Customer();
    if (bPartner != null) {
        // Se asigna la categoría de iva del cliente.
        LAR_TaxPayerType taxPayerType = LAR_TaxPayerType.getTaxPayerType(bPartner);
        customer.setIvaResponsibility(traduceTaxPayerType(taxPayerType.getName()));
        // TODO - Parametrize this method
        MInvoice mInvoice = (MInvoice) getOxpDocument();
        // Se asigna el nombre del cliente a partir del BPartner.
        customer.setName(bPartner.getName());
        // Se asigna el domicilio.
        MLocation location = MLocation.getBPLocation(Env.getCtx(), mInvoice.getC_BPartner_Location_ID(), getTrxName());
        customer.setLocation(location.toString());
        // Bpartner.
        if (bPartner.getTaxID() != null && !bPartner.getTaxID().trim().equals("")) {
            customer.setIdentificationType(Customer.CUIT);
            customer.setIdentificationNumber(bPartner.getTaxID());
        }
    }
    return customer;
}
Also used : Customer(ar.com.ergio.print.fiscal.document.Customer) MInvoice(org.compiere.model.MInvoice) MBPartner(org.compiere.model.MBPartner) LAR_TaxPayerType(ar.com.ergio.model.LAR_TaxPayerType) MLocation(org.compiere.model.MLocation)

Example 93 with MBPartner

use of org.compiere.model.MBPartner in project lar_361 by comitsrl.

the class FiscalDocumentPrint method createDNFH.

private DNFH createDNFH(final MInOut shipment) {
    final DNFH dnfh = new DNFH();
    // Se asigna el cliente.
    Customer customer = null;
    final MBPartner bPartner = new MBPartner(Env.getCtx(), shipment.getC_BPartner_ID(), null);
    if (bPartner != null) {
        customer = new Customer();
        // Se asigna la categoría de iva del cliente.
        LAR_TaxPayerType taxPayerType = LAR_TaxPayerType.getTaxPayerType(bPartner);
        customer.setIvaResponsibility(traduceTaxPayerType(taxPayerType.getName()));
        // Se asigna el nombre del cliente a partir del BPartner.
        customer.setName(bPartner.getName());
        // Se asigna el domicilio.
        final MLocation location = MLocation.getBPLocation(Env.getCtx(), shipment.getC_BPartner_Location_ID(), getTrxName());
        customer.setLocation(location.toString());
        // Se identifica al cliente con el C.U.I.T. configurado en el Bpartner.
        if (bPartner.getTaxID() != null && !bPartner.getTaxID().trim().equals("")) {
            customer.setIdentificationType(Customer.CUIT);
            customer.setIdentificationNumber(bPartner.getTaxID());
        }
    }
    dnfh.setCustomer(customer);
    // Recupera el numero de copias a imprimir
    int numberOfCopies = MSysConfig.getIntValue("LAR_Remitos_NumeroDeCopias", 0, Env.getAD_Client_ID(shipment.getCtx()));
    dnfh.setNumberOfCopies(numberOfCopies);
    // Cargar las lineas del remito
    loadDNFHLines(shipment, dnfh);
    return dnfh;
}
Also used : Customer(ar.com.ergio.print.fiscal.document.Customer) MBPartner(org.compiere.model.MBPartner) DNFH(ar.com.ergio.print.fiscal.document.DNFH) LAR_TaxPayerType(ar.com.ergio.model.LAR_TaxPayerType) MLocation(org.compiere.model.MLocation)

Example 94 with MBPartner

use of org.compiere.model.MBPartner in project lar_361 by comitsrl.

the class LCO_MInvoice method recalcWithholdings.

public int recalcWithholdings() {
    MDocType dt = new MDocType(getCtx(), getC_DocTypeTarget_ID(), get_TrxName());
    String genwh = dt.get_ValueAsString("GenerateWithholding");
    if (genwh == null || genwh.equals("N"))
        return 0;
    int noins = 0;
    log.info("");
    BigDecimal totwith = new BigDecimal("0");
    try {
        // Delete previous records generated
        String sqldel = "DELETE FROM LCO_InvoiceWithholding " + " WHERE C_Invoice_ID = ?";
        PreparedStatement pstmtdel = DB.prepareStatement(sqldel, get_TrxName());
        pstmtdel.setInt(1, getC_Invoice_ID());
        int nodel = pstmtdel.executeUpdate();
        log.config("LCO_InvoiceWithholding deleted=" + nodel);
        pstmtdel.close();
        // Fill variables normally needed
        // BP variables
        MBPartner bp = new MBPartner(getCtx(), getC_BPartner_ID(), get_TrxName());
        Integer bp_isic_int = (Integer) bp.get_Value("LCO_ISIC_ID");
        int bp_isic_id = 0;
        if (bp_isic_int != null)
            bp_isic_id = bp_isic_int.intValue();
        Integer bp_taxpayertype_int = (Integer) bp.get_Value("LCO_TaxPayerType_ID");
        int bp_taxpayertype_id = 0;
        if (bp_taxpayertype_int != null)
            bp_taxpayertype_id = bp_taxpayertype_int.intValue();
        MBPartnerLocation mbpl = new MBPartnerLocation(getCtx(), getC_BPartner_Location_ID(), get_TrxName());
        MLocation bpl = MLocation.get(getCtx(), mbpl.getC_Location_ID(), get_TrxName());
        int bp_city_id = bpl.getC_City_ID();
        // OrgInfo variables
        MOrgInfo oi = MOrgInfo.get(getCtx(), getAD_Org_ID(), get_TrxName());
        Integer org_isic_int = (Integer) oi.get_Value("LCO_ISIC_ID");
        int org_isic_id = 0;
        if (org_isic_int != null)
            org_isic_id = org_isic_int.intValue();
        Integer org_taxpayertype_int = (Integer) oi.get_Value("LCO_TaxPayerType_ID");
        int org_taxpayertype_id = 0;
        if (org_taxpayertype_int != null)
            org_taxpayertype_id = org_taxpayertype_int.intValue();
        MLocation ol = MLocation.get(getCtx(), oi.getC_Location_ID(), get_TrxName());
        int org_city_id = ol.getC_City_ID();
        // Search withholding types applicable depending on IsSOTrx
        String sqlt = "SELECT LCO_WithholdingType_ID " + " FROM LCO_WithholdingType " + " WHERE IsSOTrx = ? AND IsActive = 'Y'";
        PreparedStatement pstmtt = DB.prepareStatement(sqlt, get_TrxName());
        pstmtt.setString(1, isSOTrx() ? "Y" : "N");
        ResultSet rst = pstmtt.executeQuery();
        while (rst.next()) {
            // For each applicable withholding
            X_LCO_WithholdingType wt = new X_LCO_WithholdingType(getCtx(), rst.getInt(1), get_TrxName());
            X_LCO_WithholdingRuleConf wrc = null;
            log.info("Withholding Type: " + wt.getLCO_WithholdingType_ID() + "/" + wt.getName());
            // look the conf fields
            String sqlrc = "SELECT * " + " FROM LCO_WithholdingRuleConf " + " WHERE LCO_WithholdingType_ID = ? AND IsActive = 'Y'";
            PreparedStatement pstmtrc = DB.prepareStatement(sqlrc, get_TrxName());
            pstmtrc.setInt(1, wt.getLCO_WithholdingType_ID());
            ResultSet rsrc = pstmtrc.executeQuery();
            if (rsrc.next()) {
                wrc = new X_LCO_WithholdingRuleConf(getCtx(), rsrc, get_TrxName());
            } else {
                log.warning("No LCO_WithholdingRuleConf for LCO_WithholdingType = " + wt.getLCO_WithholdingType_ID());
                rsrc.close();
                pstmtrc.close();
                continue;
            }
            rsrc.close();
            pstmtrc.close();
            // look for applicable rules according to config fields (rule)
            StringBuffer sqlr = new StringBuffer("SELECT LCO_WithholdingRule_ID " + "  FROM LCO_WithholdingRule " + " WHERE LCO_WithholdingType_ID = ? " + "   AND IsActive = 'Y' " + "   AND ValidFrom <= ? ");
            if (wrc.isUseBPISIC())
                sqlr.append(" AND LCO_BP_ISIC_ID = ? ");
            if (wrc.isUseBPTaxPayerType())
                sqlr.append(" AND LCO_BP_TaxPayerType_ID = ? ");
            if (wrc.isUseOrgISIC())
                sqlr.append(" AND LCO_Org_ISIC_ID = ? ");
            if (wrc.isUseOrgTaxPayerType())
                sqlr.append(" AND LCO_Org_TaxPayerType_ID = ? ");
            if (wrc.isUseBPCity())
                sqlr.append(" AND LCO_BP_City_ID = ? ");
            if (wrc.isUseOrgCity())
                sqlr.append(" AND LCO_Org_City_ID = ? ");
            // Add withholding categories of lines
            if (wrc.isUseWithholdingCategory()) {
                // look the conf fields
                String sqlwcs = "SELECT DISTINCT COALESCE (p.LCO_WithholdingCategory_ID, COALESCE (c.LCO_WithholdingCategory_ID, 0)) " + "  FROM C_InvoiceLine il " + "  LEFT OUTER JOIN M_Product p ON (il.M_Product_ID = p.M_Product_ID) " + "  LEFT OUTER JOIN C_Charge c ON (il.C_Charge_ID = c.C_Charge_ID) " + "  WHERE C_Invoice_ID = ? AND il.IsActive='Y'";
                PreparedStatement pstmtwcs = DB.prepareStatement(sqlwcs, get_TrxName());
                pstmtwcs.setInt(1, getC_Invoice_ID());
                ResultSet rswcs = pstmtwcs.executeQuery();
                int i = 0;
                int wcid = 0;
                boolean addedlines = false;
                while (rswcs.next()) {
                    wcid = rswcs.getInt(1);
                    if (wcid > 0) {
                        if (i == 0) {
                            sqlr.append(" AND LCO_WithholdingCategory_ID IN (");
                            addedlines = true;
                        } else {
                            sqlr.append(",");
                        }
                        sqlr.append(wcid);
                        i++;
                    }
                }
                if (addedlines)
                    sqlr.append(") ");
                rswcs.close();
                pstmtwcs.close();
            }
            // Add tax categories of lines
            if (wrc.isUseProductTaxCategory()) {
                // look the conf fields
                String sqlwct = "SELECT DISTINCT COALESCE (p.C_TaxCategory_ID, COALESCE (c.C_TaxCategory_ID, 0)) " + "  FROM C_InvoiceLine il " + "  LEFT OUTER JOIN M_Product p ON (il.M_Product_ID = p.M_Product_ID) " + "  LEFT OUTER JOIN C_Charge c ON (il.C_Charge_ID = c.C_Charge_ID) " + "  WHERE C_Invoice_ID = ? AND il.IsActive='Y'";
                PreparedStatement pstmtwct = DB.prepareStatement(sqlwct, get_TrxName());
                pstmtwct.setInt(1, getC_Invoice_ID());
                ResultSet rswct = pstmtwct.executeQuery();
                int i = 0;
                int wcid = 0;
                boolean addedlines = false;
                while (rswct.next()) {
                    wcid = rswct.getInt(1);
                    if (wcid > 0) {
                        if (i == 0) {
                            sqlr.append(" AND C_TaxCategory_ID IN (");
                            addedlines = true;
                        } else {
                            sqlr.append(",");
                        }
                        sqlr.append(wcid);
                        i++;
                    }
                }
                if (addedlines)
                    sqlr.append(") ");
                rswct.close();
                pstmtwct.close();
            }
            PreparedStatement pstmtr = DB.prepareStatement(sqlr.toString(), get_TrxName());
            int idxpar = 1;
            pstmtr.setInt(idxpar, wt.getLCO_WithholdingType_ID());
            idxpar++;
            pstmtr.setTimestamp(idxpar, getDateInvoiced());
            if (wrc.isUseBPISIC()) {
                idxpar++;
                pstmtr.setInt(idxpar, bp_isic_id);
            }
            if (wrc.isUseBPTaxPayerType()) {
                idxpar++;
                pstmtr.setInt(idxpar, bp_taxpayertype_id);
            }
            if (wrc.isUseOrgISIC()) {
                idxpar++;
                pstmtr.setInt(idxpar, org_isic_id);
            }
            if (wrc.isUseOrgTaxPayerType()) {
                idxpar++;
                pstmtr.setInt(idxpar, org_taxpayertype_id);
            }
            if (wrc.isUseBPCity()) {
                idxpar++;
                pstmtr.setInt(idxpar, bp_city_id);
                if (bp_city_id <= 0)
                    log.warning("Possible configuration error bp city is used but not set");
            }
            if (wrc.isUseOrgCity()) {
                idxpar++;
                pstmtr.setInt(idxpar, org_city_id);
                if (org_city_id <= 0)
                    log.warning("Possible configuration error org city is used but not set");
            }
            ResultSet rsr = pstmtr.executeQuery();
            while (rsr.next()) {
                // for each applicable rule
                X_LCO_WithholdingRule wr = new X_LCO_WithholdingRule(getCtx(), rsr.getInt(1), get_TrxName());
                // bring record for withholding calculation
                X_LCO_WithholdingCalc wc = new X_LCO_WithholdingCalc(getCtx(), wr.getLCO_WithholdingCalc_ID(), get_TrxName());
                if (wc.getLCO_WithholdingCalc_ID() == 0) {
                    log.severe("Rule without calc " + rsr.getInt(1));
                    continue;
                }
                // bring record for tax
                MTax tax = new MTax(getCtx(), wc.getC_Tax_ID(), get_TrxName());
                log.info("WithholdingRule: " + wr.getLCO_WithholdingRule_ID() + "/" + wr.getName() + " BaseType:" + wc.getBaseType() + " Calc: " + wc.getLCO_WithholdingCalc_ID() + "/" + wc.getName() + " CalcOnInvoice:" + wc.isCalcOnInvoice() + " Tax: " + tax.getC_Tax_ID() + "/" + tax.getName());
                // calc base
                // apply rule to calc base
                BigDecimal base = null;
                if (wc.getBaseType() == null)
                    log.severe("Base Type null in calc record " + wr.getLCO_WithholdingCalc_ID());
                else if (wc.getBaseType().equals(X_LCO_WithholdingCalc.BASETYPE_Document))
                    base = getTotalLines();
                else // @fchiappano Utilizar como base de calculo, el total de la Factura.
                if (wc.getBaseType().equals("G"))
                    base = getGrandTotal();
                else if (wc.getBaseType().equals(X_LCO_WithholdingCalc.BASETYPE_Line)) {
                    String sqllca;
                    if (wrc.isUseWithholdingCategory() && wrc.isUseProductTaxCategory()) {
                        // base = lines of the withholding category and tax category
                        sqllca = "SELECT SUM (LineNetAmt) " + "  FROM C_InvoiceLine il " + " WHERE IsActive='Y' AND C_Invoice_ID = ? " + "   AND (   EXISTS ( " + "              SELECT 1 " + "                FROM M_Product p " + "               WHERE il.M_Product_ID = p.M_Product_ID " + "                 AND p.C_TaxCategory_ID = ? " + "                 AND p.LCO_WithholdingCategory_ID = ?) " + "        OR EXISTS ( " + "              SELECT 1 " + "                FROM C_Charge c " + "               WHERE il.C_Charge_ID = c.C_Charge_ID " + "                 AND c.C_TaxCategory_ID = ? " + "                 AND c.LCO_WithholdingCategory_ID = ?) " + "       ) ";
                    } else if (wrc.isUseWithholdingCategory()) {
                        // base = lines of the withholding category
                        sqllca = "SELECT SUM (LineNetAmt) " + "  FROM C_InvoiceLine il " + " WHERE IsActive='Y' AND C_Invoice_ID = ? " + "   AND (   EXISTS ( " + "              SELECT 1 " + "                FROM M_Product p " + "               WHERE il.M_Product_ID = p.M_Product_ID " + "                 AND p.LCO_WithholdingCategory_ID = ?) " + "        OR EXISTS ( " + "              SELECT 1 " + "                FROM C_Charge c " + "               WHERE il.C_Charge_ID = c.C_Charge_ID " + "                 AND c.LCO_WithholdingCategory_ID = ?) " + "       ) ";
                    } else if (wrc.isUseProductTaxCategory()) {
                        // base = lines of the product tax category
                        sqllca = "SELECT SUM (LineNetAmt) " + "  FROM C_InvoiceLine il " + " WHERE IsActive='Y' AND C_Invoice_ID = ? " + "   AND (   EXISTS ( " + "              SELECT 1 " + "                FROM M_Product p " + "               WHERE il.M_Product_ID = p.M_Product_ID " + "                 AND p.C_TaxCategory_ID = ?) " + "        OR EXISTS ( " + "              SELECT 1 " + "                FROM C_Charge c " + "               WHERE il.C_Charge_ID = c.C_Charge_ID " + "                 AND c.C_TaxCategory_ID = ?) " + "       ) ";
                    } else {
                        // base = all lines
                        sqllca = "SELECT SUM (LineNetAmt) " + "  FROM C_InvoiceLine il " + " WHERE IsActive='Y' AND C_Invoice_ID = ? ";
                    }
                    PreparedStatement pstmtlca = DB.prepareStatement(sqllca, get_TrxName());
                    pstmtlca.setInt(1, getC_Invoice_ID());
                    if (wrc.isUseWithholdingCategory() && wrc.isUseProductTaxCategory()) {
                        pstmtlca.setInt(2, wr.getC_TaxCategory_ID());
                        pstmtlca.setInt(3, wr.getLCO_WithholdingCategory_ID());
                        pstmtlca.setInt(4, wr.getC_TaxCategory_ID());
                        pstmtlca.setInt(5, wr.getLCO_WithholdingCategory_ID());
                    } else if (wrc.isUseWithholdingCategory()) {
                        pstmtlca.setInt(2, wr.getLCO_WithholdingCategory_ID());
                        pstmtlca.setInt(3, wr.getLCO_WithholdingCategory_ID());
                    } else if (wrc.isUseProductTaxCategory()) {
                        pstmtlca.setInt(2, wr.getC_TaxCategory_ID());
                        pstmtlca.setInt(3, wr.getC_TaxCategory_ID());
                    } else {
                        // nothing
                        ;
                    }
                    ResultSet rslca = pstmtlca.executeQuery();
                    if (rslca.next())
                        base = rslca.getBigDecimal(1);
                    rslca.close();
                    pstmtlca.close();
                } else if (wc.getBaseType().equals(X_LCO_WithholdingCalc.BASETYPE_Tax)) {
                    // if specific tax
                    if (wc.getC_BaseTax_ID() != 0) {
                        // base = value of specific tax
                        String sqlbst = "SELECT SUM(TaxAmt) " + " FROM C_InvoiceTax " + " WHERE IsActive='Y' AND C_Invoice_ID = ? " + "   AND C_Tax_ID = ?";
                        PreparedStatement pstmtbst = DB.prepareStatement(sqlbst, get_TrxName());
                        pstmtbst.setInt(1, getC_Invoice_ID());
                        pstmtbst.setInt(2, wc.getC_BaseTax_ID());
                        ResultSet rsbst = pstmtbst.executeQuery();
                        if (rsbst.next())
                            base = rsbst.getBigDecimal(1);
                        rsbst.close();
                        pstmtbst.close();
                    } else {
                        // not specific tax
                        // base = value of all taxes
                        String sqlbsat = "SELECT SUM(TaxAmt) " + " FROM C_InvoiceTax " + " WHERE IsActive='Y' AND C_Invoice_ID = ? ";
                        PreparedStatement pstmtbsat = DB.prepareStatement(sqlbsat, get_TrxName());
                        pstmtbsat.setInt(1, getC_Invoice_ID());
                        ResultSet rsbsat = pstmtbsat.executeQuery();
                        if (rsbsat.next())
                            base = rsbsat.getBigDecimal(1);
                        rsbsat.close();
                        pstmtbsat.close();
                    }
                }
                log.info("Base: " + base + " Thresholdmin:" + wc.getThresholdmin());
                // if thresholdmax = 0 it is ignored
                if (base != null && base.compareTo(Env.ZERO) != 0 && base.compareTo(wc.getThresholdmin()) >= 0 && (wc.getThresholdMax() == null || wc.getThresholdMax().compareTo(Env.ZERO) == 0 || base.compareTo(wc.getThresholdMax()) <= 0) && tax.getRate() != null && tax.getRate().compareTo(Env.ZERO) != 0) {
                    // insert new withholding record
                    // with: type, tax, base amt, percent, tax amt, trx date, acct date, rule
                    MLCOInvoiceWithholding iwh = new MLCOInvoiceWithholding(getCtx(), 0, get_TrxName());
                    iwh.setAD_Org_ID(getAD_Org_ID());
                    iwh.setC_Invoice_ID(getC_Invoice_ID());
                    iwh.setDateAcct(getDateAcct());
                    iwh.setDateTrx(getDateInvoiced());
                    iwh.setIsCalcOnPayment(!wc.isCalcOnInvoice());
                    iwh.setIsTaxIncluded(false);
                    iwh.setLCO_WithholdingRule_ID(wr.getLCO_WithholdingRule_ID());
                    iwh.setLCO_WithholdingType_ID(wt.getLCO_WithholdingType_ID());
                    iwh.setC_Tax_ID(tax.getC_Tax_ID());
                    iwh.setPercent(tax.getRate());
                    iwh.setProcessed(false);
                    int stdPrecision = MPriceList.getStandardPrecision(getCtx(), getM_PriceList_ID());
                    BigDecimal taxamt = tax.calculateTax(base, false, stdPrecision);
                    if (wc.getAmountRefunded() != null && wc.getAmountRefunded().compareTo(Env.ZERO) > 0) {
                        taxamt = taxamt.subtract(wc.getAmountRefunded());
                    }
                    iwh.setTaxAmt(taxamt);
                    iwh.setTaxBaseAmt(base);
                    iwh.save();
                    totwith = totwith.add(taxamt);
                    noins++;
                    log.info("LCO_InvoiceWithholding saved:" + iwh.getTaxAmt());
                }
            }
        // while each applicable rule
        }
        // while type
        LCO_MInvoice.updateHeaderWithholding(getC_Invoice_ID(), get_TrxName());
        save();
        rst.close();
        pstmtt.close();
    } catch (SQLException e) {
        log.log(Level.SEVERE, "", e);
        return -1;
    }
    return noins;
}
Also used : MDocType(org.compiere.model.MDocType) SQLException(java.sql.SQLException) PreparedStatement(java.sql.PreparedStatement) MBPartner(org.compiere.model.MBPartner) BigDecimal(java.math.BigDecimal) MBPartnerLocation(org.compiere.model.MBPartnerLocation) MOrgInfo(org.compiere.model.MOrgInfo) ResultSet(java.sql.ResultSet) MTax(org.compiere.model.MTax) MLocation(org.compiere.model.MLocation)

Example 95 with MBPartner

use of org.compiere.model.MBPartner in project lar_361 by comitsrl.

the class LCO_Validator method modelChange.

// initialize
/**
 *	Model Change of a monitored Table.
 *	Called after PO.beforeSave/PO.beforeDelete
 *	when you called addModelChange for the table
 *	@param po persistent object
 *	@param type TYPE_
 *	@return error message or null
 *	@exception Exception if the recipient wishes the change to be not accept.
 */
public String modelChange(PO po, int type) throws Exception {
    log.info(po.get_TableName() + " Type: " + type);
    String msg;
    if (po.get_TableName().equals(MInvoice.Table_Name) && type == ModelValidator.TYPE_BEFORE_CHANGE) {
        msg = clearInvoiceWithholdingAmtFromInvoice((MInvoice) po);
        if (msg != null)
            return msg;
    }
    // in order to force a regeneration
    if (po.get_TableName().equals(MInvoiceLine.Table_Name) && (type == ModelValidator.TYPE_BEFORE_NEW || type == ModelValidator.TYPE_BEFORE_CHANGE || type == ModelValidator.TYPE_BEFORE_DELETE)) {
        msg = clearInvoiceWithholdingAmtFromInvoiceLine((MInvoiceLine) po, type);
        if (msg != null)
            return msg;
    }
    // Check Digit based on TaxID
    if (po.get_TableName().equals(MBPartner.Table_Name) && (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) {
        MBPartner bpartner = (MBPartner) po;
        msg = mcheckTaxIdDigit(bpartner);
        if (msg != null)
            return msg;
        msg = mfillName(bpartner);
        if (msg != null)
            return msg;
    }
    if (po.get_TableName().equals(X_LCO_TaxIdType.Table_Name) && (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) {
        X_LCO_TaxIdType taxidtype = (X_LCO_TaxIdType) po;
        if ((!taxidtype.isUseTaxIdDigit()) && taxidtype.isDigitChecked())
            taxidtype.setIsDigitChecked(false);
    }
    if (po.get_TableName().equals(X_LCO_WithholdingCalc.Table_Name) && (type == ModelValidator.TYPE_BEFORE_CHANGE || type == ModelValidator.TYPE_BEFORE_NEW)) {
        X_LCO_WithholdingCalc lwc = (X_LCO_WithholdingCalc) po;
        if (lwc.isCalcOnInvoice() && lwc.isCalcOnPayment())
            lwc.setIsCalcOnPayment(false);
    }
    return null;
}
Also used : MInvoiceLine(org.compiere.model.MInvoiceLine) MInvoice(org.compiere.model.MInvoice) MBPartner(org.compiere.model.MBPartner)

Aggregations

MBPartner (org.compiere.model.MBPartner)97 BigDecimal (java.math.BigDecimal)30 ResultSet (java.sql.ResultSet)20 MLocation (org.compiere.model.MLocation)20 MBPartnerLocation (org.compiere.model.MBPartnerLocation)18 MOrder (org.compiere.model.MOrder)17 PreparedStatement (java.sql.PreparedStatement)16 MInvoice (org.compiere.model.MInvoice)15 MOrderLine (org.compiere.model.MOrderLine)14 AdempiereException (org.adempiere.exceptions.AdempiereException)13 MUser (org.compiere.model.MUser)12 SQLException (java.sql.SQLException)11 MDocType (org.compiere.model.MDocType)11 MInvoiceLine (org.compiere.model.MInvoiceLine)10 MOrg (org.compiere.model.MOrg)9 Query (org.compiere.model.Query)9 AdempiereUserError (org.compiere.util.AdempiereUserError)9 MClient (org.compiere.model.MClient)8 MWarehouse (org.compiere.model.MWarehouse)8 Timestamp (java.sql.Timestamp)6