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);
}
}
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;
}
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;
}
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;
}
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;
}
Aggregations