use of org.compiere.model.MRfQ in project adempiere by adempiere.
the class WebInfo method getRfQResponse.
// getRfQs
/**
* Get RfQ Response.
* Needs to have ID set first
* @return rfq of BP with ID
*/
public MRfQResponse getRfQResponse() {
m_infoMessage = null;
MRfQResponse retValue = null;
String sql = "SELECT * FROM C_RfQResponse " + "WHERE C_RfQ_ID=?" + " AND C_BPartner_ID=? AND IsActive='Y'";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, m_id);
pstmt.setInt(2, getC_BPartner_ID());
rs = pstmt.executeQuery();
if (rs.next())
retValue = new MRfQResponse(m_ctx, rs, null);
} catch (Exception e) {
log.log(Level.SEVERE, "C_RfQResponse_ID=" + m_id, e);
} finally {
DB.close(rs, pstmt);
rs = null;
pstmt = null;
}
// No Response existing
if (retValue == null) {
MRfQ rfq = new MRfQ(m_ctx, m_id, null);
// We can create a Response ?
if (rfq.get_ID() != 0 && rfq.isSelfService() && rfq.isRfQResponseAccepted() && !rfq.isInvitedVendorsOnly() && getC_BPartner_ID() > 0 && getAD_User_ID() > 0) {
MBPartner bp = new MBPartner(m_ctx, getC_BPartner_ID(), null);
bp.setPrimaryAD_User_ID(getAD_User_ID());
// may have no lines
retValue = new MRfQResponse(rfq, bp);
retValue.saveEx();
}
}
//
log.fine("C_RfQResponse_ID=" + m_id + " - " + retValue);
return retValue;
}
use of org.compiere.model.MRfQ in project adempiere by adempiere.
the class RfQCreateSO method doIt.
// prepare
/**
* Process.
* A Sales Order is created for the entered Business Partner.
* A sales order line is created for each RfQ line quantity,
* where "Offer Quantity" is selected.
* If on the RfQ Line Quantity, an offer amount is entered (not 0),
* that price is used.
* If a magin is entered on RfQ Line Quantity, it overwrites the
* general margin. The margin is the percentage added to the
* Best Response Amount.
* @return message
*/
protected String doIt() throws Exception {
MRfQ rfq = new MRfQ(getCtx(), p_C_RfQ_ID, get_TrxName());
if (rfq.get_ID() == 0)
throw new IllegalArgumentException("No RfQ found");
log.info("doIt - " + rfq);
if (rfq.getC_BPartner_ID() == 0 || rfq.getC_BPartner_Location_ID() == 0)
throw new Exception("No Business Partner/Location");
MBPartner bp = new MBPartner(getCtx(), rfq.getC_BPartner_ID(), get_TrxName());
MOrder order = new MOrder(getCtx(), 0, get_TrxName());
order.setIsSOTrx(true);
if (p_C_DocType_ID != 0)
order.setC_DocTypeTarget_ID(p_C_DocType_ID);
else
order.setC_DocTypeTarget_ID();
order.setBPartner(bp);
order.setC_BPartner_Location_ID(rfq.getC_BPartner_Location_ID());
order.setSalesRep_ID(rfq.getSalesRep_ID());
if (rfq.getDateWorkComplete() != null)
order.setDatePromised(rfq.getDateWorkComplete());
order.saveEx();
MRfQLine[] lines = rfq.getLines();
for (int i = 0; i < lines.length; i++) {
MRfQLine line = lines[i];
MRfQLineQty[] qtys = line.getQtys();
for (int j = 0; j < qtys.length; j++) {
MRfQLineQty qty = qtys[j];
if (qty.isActive() && qty.isOfferQty()) {
MOrderLine ol = new MOrderLine(order);
ol.setM_Product_ID(line.getM_Product_ID(), qty.getC_UOM_ID());
ol.setDescription(line.getDescription());
ol.setQty(qty.getQty());
//
BigDecimal price = qty.getOfferAmt();
if (price == null || price.signum() == 0) {
price = qty.getBestResponseAmt();
if (price == null || price.signum() == 0) {
price = Env.ZERO;
log.warning(" - BestResponse=0 - " + qty);
} else {
BigDecimal margin = qty.getMargin();
if (margin == null || margin.signum() == 0)
margin = rfq.getMargin();
if (margin != null && margin.signum() != 0) {
margin = margin.add(ONEHUNDRED);
price = price.multiply(margin).divide(ONEHUNDRED, 2, BigDecimal.ROUND_HALF_UP);
}
}
}
// price
ol.setPrice(price);
ol.saveEx();
}
// Offer Qty
}
// All Qtys
}
// All Lines
//
rfq.setC_Order_ID(order.getC_Order_ID());
rfq.saveEx();
return order.getDocumentNo();
}
use of org.compiere.model.MRfQ in project adempiere by adempiere.
the class RfQClose method doIt.
// prepare
/**
* Process
* @see org.compiere.process.SvrProcess#doIt()
* @return message
*/
protected String doIt() throws Exception {
MRfQ rfq = new MRfQ(getCtx(), p_C_RfQ_ID, get_TrxName());
if (rfq.get_ID() == 0)
throw new IllegalArgumentException("No RfQ found");
log.info("doIt - " + rfq);
//
rfq.setProcessed(true);
rfq.saveEx();
//
int counter = 0;
MRfQResponse[] responses = rfq.getResponses(false, false);
for (int i = 0; i < responses.length; i++) {
responses[i].setProcessed(true);
responses[i].saveEx();
counter++;
}
//
return "# " + counter;
}
use of org.compiere.model.MRfQ in project adempiere by adempiere.
the class RfQCopyLines method doIt.
// prepare
/**
* Process
* @see org.compiere.process.SvrProcess#doIt()
* @return message
*/
protected String doIt() throws Exception {
log.info("doIt - From_RfQ_ID=" + p_From_RfQ_ID + ", To_RfQ_ID=" + p_To_RfQ_ID);
//
MRfQ to = new MRfQ(getCtx(), p_To_RfQ_ID, get_TrxName());
if (to.get_ID() == 0)
throw new IllegalArgumentException("No To RfQ found");
MRfQ from = new MRfQ(getCtx(), p_From_RfQ_ID, get_TrxName());
if (from.get_ID() == 0)
throw new IllegalArgumentException("No From RfQ found");
// Copy Lines
int counter = 0;
MRfQLine[] lines = from.getLines();
for (int i = 0; i < lines.length; i++) {
MRfQLine newLine = new MRfQLine(to);
newLine.setLine(lines[i].getLine());
newLine.setDescription(lines[i].getDescription());
newLine.setHelp(lines[i].getHelp());
newLine.setM_Product_ID(lines[i].getM_Product_ID());
newLine.setM_AttributeSetInstance_ID(lines[i].getM_AttributeSetInstance_ID());
// newLine.setDateWorkStart();
// newLine.setDateWorkComplete();
newLine.setDeliveryDays(lines[i].getDeliveryDays());
newLine.saveEx();
// Copy Qtys
MRfQLineQty[] qtys = lines[i].getQtys();
for (int j = 0; j < qtys.length; j++) {
MRfQLineQty newQty = new MRfQLineQty(newLine);
newQty.setC_UOM_ID(qtys[j].getC_UOM_ID());
newQty.setQty(qtys[j].getQty());
newQty.setIsOfferQty(qtys[j].isOfferQty());
newQty.setIsPurchaseQty(qtys[j].isPurchaseQty());
newQty.setMargin(qtys[j].getMargin());
newQty.saveEx();
}
counter++;
}
//
return "# " + counter;
}
use of org.compiere.model.MRfQ in project adempiere by adempiere.
the class CreateRfQAction method createRfQ.
private void createRfQ(DefaultMutableTreeNode node) {
BOMWrapper bom = (BOMWrapper) node.getUserObject();
MPPOrder mo = new MPPOrder(Env.getCtx(), bom.getPP_Order_ID(), null);
MResource r = MResource.get(Env.getCtx(), mo.getS_Resource_ID());
Calendar cal = Calendar.getInstance();
MRfQ rfq = new MRfQ(Env.getCtx(), 0, null);
rfq.setName(Msg.translate(Env.getCtx(), "C_RFQ_ID") + ": " + mo.getDocumentNo() + "_" + r.getName() + " (" + bom.getName() + ")");
rfq.setC_Currency_ID(Env.getContextAsInt(Env.getCtx(), "$C_Currency_ID"));
rfq.setQuoteType(MRfQ.QUOTETYPE_QuoteSelectedLines);
rfq.setDateWorkStart(mo.getDateStartSchedule());
rfq.setDateWorkComplete(mo.getDateFinishSchedule());
// process parameters
rfq.setC_RfQ_Topic_ID(((BigDecimal) getParameterValue("C_RFQ_Topic_ID")).intValue());
rfq.setSalesRep_ID(((BigDecimal) getParameterValue("SalesRep_ID")).intValue());
savePO(rfq);
if (successful()) {
createRfQLines(rfq.get_ID(), node);
}
}
Aggregations