/** * Create shipment/receipt line * * @param invoice * @param invoiceLine * @return shipment/receipt line */ private MInOutLine createLine(MInvoice invoice, MInvoiceLine invoiceLine) { BigDecimal qtyMatched = invoiceLine.getMatchedQty(); BigDecimal qtyInvoiced = invoiceLine.getQtyInvoiced(); BigDecimal qtyNotMatched = qtyInvoiced.subtract(qtyMatched); // If is fully matched don't create anything if (qtyNotMatched.signum() == 0) { return null; } MInOut inout = getCreateHeader(invoice); MInOutLine sLine = new MInOutLine(inout); sLine.setInvoiceLine( invoiceLine, 0, // Locator invoice.isSOTrx() ? qtyNotMatched : Env.ZERO); sLine.setQtyEntered(qtyNotMatched); sLine.setMovementQty(qtyNotMatched); if (invoice.isCreditMemo()) { sLine.setQtyEntered(sLine.getQtyEntered().negate()); sLine.setMovementQty(sLine.getMovementQty().negate()); } sLine.saveEx(); // invoiceLine.setM_InOutLine_ID(sLine.getM_InOutLine_ID()); invoiceLine.saveEx(); // return sLine; }
private void resetQtyDeliverables() { olId2QtyDeliverable.clear(); for (final MInOutLine inOutLine : line2InOut.keySet()) { if (inOutLine.getMovementQty().signum() != 0) { olId2QtyDeliverable.put(inOutLine.getC_OrderLine_ID(), inOutLine.getMovementQty()); } } }
public static MTransaction get(MInOutLine line, int M_ASI_ID) { final String whereClause = I_M_InOutLine.COLUMNNAME_M_Product_ID + "=? AND " + I_M_InOutLine.COLUMNNAME_M_InOutLine_ID + "=? AND " + I_M_InOutLine.COLUMNNAME_M_AttributeSetInstance_ID + "=?"; return new Query(line.getCtx(), Table_Name, whereClause, line.get_TrxName()) .setClient_ID() .setParameters(line.getM_Product_ID(), line.getM_InOutLine_ID(), M_ASI_ID) .firstOnly(); }
/** * get all material transaction for MInOutLine * * @param line MInOutLine * @return List the MTransaction */ public static List<MTransaction> getByInOutLine(MInOutLine line) { ArrayList<MTransaction> transactions = new ArrayList(); List<MInOutLineMA> lines = MInOutLineMA.get(line.getCtx(), line.getM_InOutLine_ID(), line.get_TrxName()); if (lines != null && lines.size() == 0) { MTransaction transaction = get(line, line.getM_AttributeSetInstance_ID()); if (transaction != null && transaction.get_ID() > 0) transactions.add(transaction); return transactions; } for (MInOutLineMA ma : lines) { MTransaction trx = get(line, ma.getM_AttributeSetInstance_ID()); transactions.add(trx); } return transactions; }
private void updateCompleteStatus() { for (final MOrder order : order2InOutLine.keySet()) { final String deliveryRule = order.getDeliveryRule(); if (X_C_Order.DELIVERYRULE_CompleteLine.equals(deliveryRule)) { // We only deliver if the line qty is same as the qty // ordered by the customer for (final MInOutLine inOutLinePO : order2InOutLine.get(order)) { if (CompleteStatus.INCOMPLETE_LINE.equals(line2CompleteStatus.get(inOutLinePO))) { inOutLinePO.setQtyEntered(BigDecimal.ZERO); inOutLinePO.setMovementQty(BigDecimal.ZERO); } } } else if (X_C_Order.DELIVERYRULE_CompleteOrder.equals(deliveryRule)) { // We only deliver any line at all if all line qtys as the // same as the qty ordered by the customer boolean removeAll = false; for (final MInOutLine inOutLinePO : order2InOutLine.get(order)) { if (CompleteStatus.INCOMPLETE_LINE.equals(line2CompleteStatus.get(inOutLinePO))) { removeAll = true; break; } } if (removeAll) { for (final MInOutLine inOutLinePO : order2InOutLine.get(order)) { inOutLinePO.setQtyEntered(BigDecimal.ZERO); inOutLinePO.setMovementQty(BigDecimal.ZERO); // update the status to show why we set the quantity to zero line2CompleteStatus.put(inOutLinePO, CompleteStatus.INCOMPLETE_ORDER); } } } else { for (MInOutLine inOutLinePO : order2InOutLine.get(order)) { // update the status to show that the "completeness" of this inOuLine is irrelevant line2CompleteStatus.put(inOutLinePO, CompleteStatus.OK); } } } }