Search in sources :

Example 6 with MInOutLine

use of org.compiere.model.MInOutLine in project adempiere by adempiere.

the class SB_InvoiceGenerateFromOrderLine method generate.

//	doIt
/**
	 * 	Generate Shipments
	 * 	@param pstmt order query 
	 *	@return info
	 */
private String generate(MOrder order) {
    try {
        {
            //	New Invoice Location
            if (!p_ConsolidateDocument || (m_invoice != null && m_invoice.getC_BPartner_Location_ID() != order.getBill_Location_ID()))
                completeInvoice();
            boolean completeOrder = MOrder.INVOICERULE_AfterOrderDelivered.equals(order.getInvoiceRule());
            //	Schedule After Delivery
            boolean doInvoice = false;
            if (MOrder.INVOICERULE_CustomerScheduleAfterDelivery.equals(order.getInvoiceRule())) {
                m_bp = new MBPartner(getCtx(), order.getBill_BPartner_ID(), null);
                if (m_bp.getC_InvoiceSchedule_ID() == 0) {
                    log.warning("BPartner has no Schedule - set to After Delivery");
                    order.setInvoiceRule(MOrder.INVOICERULE_AfterDelivery);
                    order.saveEx();
                } else {
                    MInvoiceSchedule is = MInvoiceSchedule.get(getCtx(), m_bp.getC_InvoiceSchedule_ID(), get_TrxName());
                    if (is.canInvoice(order.getDateOrdered(), order.getGrandTotal()))
                        doInvoice = true;
                    else
                        return "";
                }
            }
            //	After Delivery
            if (doInvoice || MOrder.INVOICERULE_AfterDelivery.equals(order.getInvoiceRule())) {
                MInOut[] shipments = order.getShipments();
                for (int i = 0; i < shipments.length; i++) {
                    MInOut ship = shipments[i];
                    if (//	ignore incomplete or reversals 
                    !ship.isComplete() || ship.getDocStatus().equals(MInOut.DOCSTATUS_Reversed))
                        continue;
                    MInOutLine[] shipLines = ship.getLines(false);
                    for (int j = 0; j < shipLines.length; j++) {
                        MInOutLine shipLine = shipLines[j];
                        if (!order.isOrderLine(shipLine.getC_OrderLine_ID()))
                            continue;
                        if (!getSelectionKeys().contains(shipLine.getC_OrderLine_ID()))
                            continue;
                        if (!shipLine.isInvoiced())
                            createLine(order, ship, shipLine);
                    }
                    m_line += 1000;
                }
            } else //	After Order Delivered, Immediate
            {
                MOrderLine[] oLines = order.getLines(true, null);
                for (int i = 0; i < oLines.length; i++) {
                    MOrderLine oLine = oLines[i];
                    if (!getSelectionKeys().contains(oLine.getC_OrderLine_ID()))
                        continue;
                    BigDecimal toInvoice = oLine.getQtyOrdered().subtract(oLine.getQtyInvoiced());
                    if (toInvoice.compareTo(Env.ZERO) == 0 && oLine.getM_Product_ID() != 0)
                        continue;
                    BigDecimal notInvoicedShipment = oLine.getQtyDelivered().subtract(oLine.getQtyInvoiced());
                    //
                    boolean fullyDelivered = oLine.getQtyOrdered().compareTo(oLine.getQtyDelivered()) == 0;
                    //	Complete Order
                    if (completeOrder && !fullyDelivered) {
                        log.fine("Failed CompleteOrder - " + oLine);
                        // Elaine 2008/11/25
                        addLog("Failed CompleteOrder - " + oLine);
                        completeOrder = false;
                        break;
                    } else //	Immediate
                    if (MOrder.INVOICERULE_Immediate.equals(order.getInvoiceRule())) {
                        log.fine("Immediate - ToInvoice=" + toInvoice + " - " + oLine);
                        BigDecimal qtyEntered = toInvoice;
                        if (oLine.getQtyEntered().compareTo(oLine.getQtyOrdered()) != 0)
                            qtyEntered = toInvoice.multiply(oLine.getQtyEntered()).divide(oLine.getQtyOrdered(), 12, BigDecimal.ROUND_HALF_UP);
                        createLine(order, oLine, toInvoice, qtyEntered);
                    } else {
                        log.fine("Failed: " + order.getInvoiceRule() + " - ToInvoice=" + toInvoice + " - " + oLine);
                        addLog("Failed: " + order.getInvoiceRule() + " - ToInvoice=" + toInvoice + " - " + oLine);
                    }
                }
                //	for all order lines
                if (MOrder.INVOICERULE_Immediate.equals(order.getInvoiceRule()))
                    m_line += 1000;
            }
            //	Complete Order successful
            if (completeOrder && MOrder.INVOICERULE_AfterOrderDelivered.equals(order.getInvoiceRule())) {
                MInOut[] shipments = order.getShipments();
                for (int i = 0; i < shipments.length; i++) {
                    MInOut ship = shipments[i];
                    if (//	ignore incomplete or reversals 
                    !ship.isComplete() || ship.getDocStatus().equals(MInOut.DOCSTATUS_Reversed))
                        continue;
                    MInOutLine[] shipLines = ship.getLines(false);
                    for (int j = 0; j < shipLines.length; j++) {
                        MInOutLine shipLine = shipLines[j];
                        if (!order.isOrderLine(shipLine.getC_OrderLine_ID()))
                            continue;
                        if (!shipLine.isInvoiced())
                            createLine(order, ship, shipLine);
                    }
                    m_line += 1000;
                }
            }
        //	complete Order
        }
    //	for all orders
    } catch (Exception e) {
        log.log(Level.SEVERE, "", e);
    }
    completeInvoice();
    return "@Created@ = " + m_created;
}
Also used : MInOut(org.compiere.model.MInOut) MInOutLine(org.compiere.model.MInOutLine) MInvoiceSchedule(org.compiere.model.MInvoiceSchedule) MBPartner(org.compiere.model.MBPartner) MOrderLine(org.compiere.model.MOrderLine) BigDecimal(java.math.BigDecimal)

Example 7 with MInOutLine

use of org.compiere.model.MInOutLine in project adempiere by adempiere.

the class InOutGenerateRMA method createShipmentLines.

private MInOutLine[] createShipmentLines(MRMA rma, MInOut shipment) {
    ArrayList<MInOutLine> shipLineList = new ArrayList<MInOutLine>();
    MRMALine[] rmaLines = rma.getLines(true);
    for (MRMALine rmaLine : rmaLines) {
        if (rmaLine.getM_InOutLine_ID() != 0) {
            MInOutLine shipLine = new MInOutLine(shipment);
            shipLine.setM_RMALine_ID(rmaLine.get_ID());
            shipLine.setLine(rmaLine.getLine());
            shipLine.setDescription(rmaLine.getDescription());
            shipLine.setM_Product_ID(rmaLine.getM_Product_ID());
            shipLine.setM_AttributeSetInstance_ID(rmaLine.getM_AttributeSetInstance_ID());
            shipLine.setC_UOM_ID(rmaLine.getC_UOM_ID());
            shipLine.setQty(rmaLine.getQty());
            shipLine.setM_Locator_ID(rmaLine.getM_Locator_ID());
            shipLine.setC_Project_ID(rmaLine.getC_Project_ID());
            shipLine.setC_Campaign_ID(rmaLine.getC_Campaign_ID());
            shipLine.setC_Activity_ID(rmaLine.getC_Activity_ID());
            shipLine.setC_ProjectPhase_ID(rmaLine.getC_ProjectPhase_ID());
            shipLine.setC_ProjectTask_ID(rmaLine.getC_ProjectTask_ID());
            shipLine.setUser1_ID(rmaLine.getUser1_ID());
            shipLine.setUser2_ID(rmaLine.getUser2_ID());
            shipLine.setUser3_ID(rmaLine.getUser3_ID());
            shipLine.setUser4_ID(rmaLine.getUser4_ID());
            shipLine.saveEx();
            shipLineList.add(shipLine);
            //
            // Link to corresponding Invoice Line (if any) - teo_sarca [ 2818523 ]
            // The MMatchInv records will be automatically generated on MInOut.completeIt()
            MInvoiceLine invoiceLine = new Query(shipment.getCtx(), I_C_InvoiceLine.Table_Name, I_C_InvoiceLine.COLUMNNAME_M_RMALine_ID + "=?", shipment.get_TrxName()).setParameters(rmaLine.getM_RMALine_ID()).firstOnly();
            if (invoiceLine != null) {
                invoiceLine.setM_InOutLine_ID(shipLine.getM_InOutLine_ID());
                invoiceLine.saveEx();
            }
        }
    }
    MInOutLine[] shipLines = new MInOutLine[shipLineList.size()];
    shipLineList.toArray(shipLines);
    return shipLines;
}
Also used : Query(org.compiere.model.Query) MInOutLine(org.compiere.model.MInOutLine) MInvoiceLine(org.compiere.model.MInvoiceLine) ArrayList(java.util.ArrayList) MRMALine(org.compiere.model.MRMALine)

Example 8 with MInOutLine

use of org.compiere.model.MInOutLine in project adempiere by adempiere.

the class CreateFromShipment method save.

/**
	 *  Save - Create Invoice Lines
	 *  @return true if saved
	 */
public boolean save(IMiniTable miniTable, String trxName) {
    /*
		dataTable.stopEditor(true);
		log.config("");
		TableModel model = dataTable.getModel();
		int rows = model.getRowCount();
		if (rows == 0)
			return false;
		//
		Integer defaultLoc = (Integer) locatorField.getValue();
		if (defaultLoc == null || defaultLoc.intValue() == 0) {
			locatorField.setBackground(AdempierePLAF.getFieldBackground_Error());
			return false;
		}
		*/
    int M_Locator_ID = defaultLocator_ID;
    if (M_Locator_ID == 0) {
        return false;
    }
    // Get Shipment
    MInOut inout = new MInOut(Env.getCtx(), m_Record_ID, trxName);
    log.config(inout + ", C_Locator_ID=" + M_Locator_ID);
    // Lines
    for (int i = 0; i < miniTable.getRowCount(); i++) {
        if (((Boolean) miniTable.getValueAt(i, 0)).booleanValue()) {
            // variable values
            // Qty
            BigDecimal QtyEntered = (BigDecimal) miniTable.getValueAt(i, 1);
            // UOM
            KeyNamePair pp = (KeyNamePair) miniTable.getValueAt(i, 2);
            int C_UOM_ID = pp.getKey();
            // Locator
            pp = (KeyNamePair) miniTable.getValueAt(i, 3);
            // If a locator is specified on the product, choose that otherwise default locator
            M_Locator_ID = pp != null && pp.getKey() != 0 ? pp.getKey() : defaultLocator_ID;
            // Product
            pp = (KeyNamePair) miniTable.getValueAt(i, 4);
            int M_Product_ID = pp.getKey();
            int C_OrderLine_ID = 0;
            // OrderLine
            pp = (KeyNamePair) miniTable.getValueAt(i, 6);
            if (pp != null)
                C_OrderLine_ID = pp.getKey();
            int M_RMALine_ID = 0;
            // RMA
            pp = (KeyNamePair) miniTable.getValueAt(i, 7);
            // If we have RMA
            if (pp != null)
                M_RMALine_ID = pp.getKey();
            int C_InvoiceLine_ID = 0;
            MInvoiceLine il = null;
            // InvoiceLine
            pp = (KeyNamePair) miniTable.getValueAt(i, 8);
            if (pp != null)
                C_InvoiceLine_ID = pp.getKey();
            if (C_InvoiceLine_ID != 0)
                il = new MInvoiceLine(Env.getCtx(), C_InvoiceLine_ID, trxName);
            //boolean isInvoiced = (C_InvoiceLine_ID != 0);
            //	Precision of Qty UOM
            int precision = 2;
            if (M_Product_ID != 0) {
                MProduct product = MProduct.get(Env.getCtx(), M_Product_ID);
                precision = product.getUOMPrecision();
            }
            QtyEntered = QtyEntered.setScale(precision, BigDecimal.ROUND_HALF_DOWN);
            //
            log.fine("Line QtyEntered=" + QtyEntered + ", Product=" + M_Product_ID + ", OrderLine=" + C_OrderLine_ID + ", InvoiceLine=" + C_InvoiceLine_ID);
            //	Credit Memo - negative Qty
            if (m_invoice != null && m_invoice.isCreditMemo())
                QtyEntered = QtyEntered.negate();
            //	Create new InOut Line
            MInOutLine iol = new MInOutLine(inout);
            //	Line UOM
            iol.setM_Product_ID(M_Product_ID, C_UOM_ID);
            //	Movement/Entered
            iol.setQty(QtyEntered);
            //
            MOrderLine ol = null;
            MRMALine rmal = null;
            if (C_OrderLine_ID != 0) {
                iol.setC_OrderLine_ID(C_OrderLine_ID);
                ol = new MOrderLine(Env.getCtx(), C_OrderLine_ID, trxName);
                if (ol.getQtyEntered().compareTo(ol.getQtyOrdered()) != 0) {
                    iol.setMovementQty(QtyEntered.multiply(ol.getQtyOrdered()).divide(ol.getQtyEntered(), 12, BigDecimal.ROUND_HALF_UP));
                    iol.setC_UOM_ID(ol.getC_UOM_ID());
                }
                iol.setM_AttributeSetInstance_ID(ol.getM_AttributeSetInstance_ID());
                iol.setDescription(ol.getDescription());
                //
                iol.setC_Project_ID(ol.getC_Project_ID());
                iol.setC_ProjectPhase_ID(ol.getC_ProjectPhase_ID());
                iol.setC_ProjectTask_ID(ol.getC_ProjectTask_ID());
                iol.setC_Activity_ID(ol.getC_Activity_ID());
                iol.setC_Campaign_ID(ol.getC_Campaign_ID());
                iol.setAD_OrgTrx_ID(ol.getAD_OrgTrx_ID());
                iol.setUser1_ID(ol.getUser1_ID());
                iol.setUser2_ID(ol.getUser2_ID());
                iol.setUser3_ID(ol.getUser3_ID());
                iol.setUser4_ID(ol.getUser4_ID());
            } else if (il != null) {
                if (il.getQtyEntered().compareTo(il.getQtyInvoiced()) != 0) {
                    iol.setQtyEntered(QtyEntered.multiply(il.getQtyInvoiced()).divide(il.getQtyEntered(), 12, BigDecimal.ROUND_HALF_UP));
                    iol.setC_UOM_ID(il.getC_UOM_ID());
                }
                iol.setDescription(il.getDescription());
                iol.setC_Project_ID(il.getC_Project_ID());
                iol.setC_ProjectPhase_ID(il.getC_ProjectPhase_ID());
                iol.setC_ProjectTask_ID(il.getC_ProjectTask_ID());
                iol.setC_Activity_ID(il.getC_Activity_ID());
                iol.setC_Campaign_ID(il.getC_Campaign_ID());
                iol.setAD_OrgTrx_ID(il.getAD_OrgTrx_ID());
                iol.setUser1_ID(il.getUser1_ID());
                iol.setUser2_ID(il.getUser2_ID());
                iol.setUser3_ID(il.getUser3_ID());
                iol.setUser4_ID(il.getUser4_ID());
            } else if (M_RMALine_ID != 0) {
                rmal = new MRMALine(Env.getCtx(), M_RMALine_ID, trxName);
                iol.setM_RMALine_ID(M_RMALine_ID);
                iol.setQtyEntered(QtyEntered);
                iol.setDescription(rmal.getDescription());
                iol.setM_AttributeSetInstance_ID(rmal.getM_AttributeSetInstance_ID());
                iol.setC_Project_ID(rmal.getC_Project_ID());
                iol.setC_ProjectPhase_ID(rmal.getC_ProjectPhase_ID());
                iol.setC_ProjectTask_ID(rmal.getC_ProjectTask_ID());
                iol.setC_Activity_ID(rmal.getC_Activity_ID());
                iol.setAD_OrgTrx_ID(rmal.getAD_OrgTrx_ID());
                iol.setUser1_ID(rmal.getUser1_ID());
                iol.setUser2_ID(rmal.getUser2_ID());
                iol.setUser3_ID(rmal.getUser3_ID());
                iol.setUser4_ID(rmal.getUser4_ID());
            }
            //	Charge
            if (M_Product_ID == 0) {
                if (//	from order
                ol != null && ol.getC_Charge_ID() != 0)
                    iol.setC_Charge_ID(ol.getC_Charge_ID());
                else if (//	from invoice
                il != null && il.getC_Charge_ID() != 0)
                    iol.setC_Charge_ID(il.getC_Charge_ID());
                else if (// from rma
                rmal != null && rmal.getC_Charge_ID() != 0)
                    iol.setC_Charge_ID(rmal.getC_Charge_ID());
            }
            // Set locator
            iol.setM_Locator_ID(M_Locator_ID);
            if (!iol.save())
                log.log(Level.SEVERE, "Line NOT created #" + i);
            else //	Create Invoice Line Link
            if (il != null) {
                il.setM_InOutLine_ID(iol.getM_InOutLine_ID());
                il.saveEx();
            }
        }
    //   if selected
    }
    /**
		 *  Update Header
		 *  - if linked to another order/invoice/rma - remove link
		 *  - if no link set it
		 */
    if (p_order != null && p_order.getC_Order_ID() != 0) {
        inout.setC_Order_ID(p_order.getC_Order_ID());
        inout.setAD_OrgTrx_ID(p_order.getAD_OrgTrx_ID());
        inout.setC_Project_ID(p_order.getC_Project_ID());
        inout.setC_Campaign_ID(p_order.getC_Campaign_ID());
        inout.setC_Activity_ID(p_order.getC_Activity_ID());
        inout.setUser1_ID(p_order.getUser1_ID());
        inout.setUser2_ID(p_order.getUser2_ID());
        inout.setUser3_ID(p_order.getUser3_ID());
        inout.setUser4_ID(p_order.getUser4_ID());
        if (p_order.isDropShip()) {
            inout.setM_Warehouse_ID(p_order.getM_Warehouse_ID());
            inout.setIsDropShip(p_order.isDropShip());
            inout.setDropShip_BPartner_ID(p_order.getDropShip_BPartner_ID());
            inout.setDropShip_Location_ID(p_order.getDropShip_Location_ID());
            inout.setDropShip_User_ID(p_order.getDropShip_User_ID());
        }
    }
    if (m_invoice != null && m_invoice.getC_Invoice_ID() != 0) {
        if (inout.getC_Order_ID() == 0)
            inout.setC_Order_ID(m_invoice.getC_Order_ID());
        inout.setC_Invoice_ID(m_invoice.getC_Invoice_ID());
        inout.setAD_OrgTrx_ID(m_invoice.getAD_OrgTrx_ID());
        inout.setC_Project_ID(m_invoice.getC_Project_ID());
        inout.setC_Campaign_ID(m_invoice.getC_Campaign_ID());
        inout.setC_Activity_ID(m_invoice.getC_Activity_ID());
        inout.setUser1_ID(m_invoice.getUser1_ID());
        inout.setUser2_ID(m_invoice.getUser2_ID());
        inout.setUser3_ID(m_invoice.getUser3_ID());
        inout.setUser4_ID(m_invoice.getUser4_ID());
    }
    if (m_rma != null && m_rma.getM_RMA_ID() != 0) {
        MInOut originalIO = m_rma.getShipment();
        inout.setIsSOTrx(m_rma.isSOTrx());
        inout.setC_Order_ID(0);
        inout.setC_Invoice_ID(0);
        inout.setM_RMA_ID(m_rma.getM_RMA_ID());
        inout.setAD_OrgTrx_ID(originalIO.getAD_OrgTrx_ID());
        inout.setC_Project_ID(originalIO.getC_Project_ID());
        inout.setC_Campaign_ID(originalIO.getC_Campaign_ID());
        inout.setC_Activity_ID(originalIO.getC_Activity_ID());
        inout.setUser1_ID(originalIO.getUser1_ID());
        inout.setUser2_ID(originalIO.getUser2_ID());
        inout.setUser3_ID(originalIO.getUser3_ID());
        inout.setUser4_ID(originalIO.getUser4_ID());
    }
    inout.saveEx();
    return true;
}
Also used : MInOut(org.compiere.model.MInOut) MProduct(org.compiere.model.MProduct) MInOutLine(org.compiere.model.MInOutLine) MInvoiceLine(org.compiere.model.MInvoiceLine) KeyNamePair(org.compiere.util.KeyNamePair) MOrderLine(org.compiere.model.MOrderLine) MRMALine(org.compiere.model.MRMALine) BigDecimal(java.math.BigDecimal)

Example 9 with MInOutLine

use of org.compiere.model.MInOutLine in project adempiere by adempiere.

the class CreateFromInvoice method save.

/**
	 *  Save - Create Invoice Lines
	 *  @return true if saved
	 */
public boolean save(IMiniTable miniTable, String trxName) {
    //  Invoice
    //	Yamel Senih FR [ 114 ] get Record ID from record
    MInvoice invoice = new MInvoice(Env.getCtx(), m_Record_ID, trxName);
    log.config(invoice.toString());
    if (p_order != null) {
        //	overwrite header values
        invoice.setOrder(p_order);
        invoice.saveEx();
    }
    if (m_rma != null) {
        invoice.setM_RMA_ID(m_rma.getM_RMA_ID());
        invoice.saveEx();
    }
    //  Lines
    for (int i = 0; i < miniTable.getRowCount(); i++) {
        if (((Boolean) miniTable.getValueAt(i, 0)).booleanValue()) {
            MProduct product = null;
            //  variable values
            //  1-Qty
            BigDecimal QtyEntered = (BigDecimal) miniTable.getValueAt(i, 1);
            //  2-UOM
            KeyNamePair pp = (KeyNamePair) miniTable.getValueAt(i, 2);
            int C_UOM_ID = pp.getKey();
            //
            //  3-Product
            pp = (KeyNamePair) miniTable.getValueAt(i, 3);
            int M_Product_ID = 0;
            if (pp != null)
                M_Product_ID = pp.getKey();
            //
            int C_OrderLine_ID = 0;
            //  5-OrderLine
            pp = (KeyNamePair) miniTable.getValueAt(i, 5);
            if (pp != null)
                C_OrderLine_ID = pp.getKey();
            int M_InOutLine_ID = 0;
            //  6-Shipment
            pp = (KeyNamePair) miniTable.getValueAt(i, 6);
            if (pp != null)
                M_InOutLine_ID = pp.getKey();
            //
            int M_RMALine_ID = 0;
            //  7-RMALine
            pp = (KeyNamePair) miniTable.getValueAt(i, 7);
            if (pp != null)
                M_RMALine_ID = pp.getKey();
            //	Precision of Qty UOM
            int precision = 2;
            if (M_Product_ID != 0) {
                product = MProduct.get(Env.getCtx(), M_Product_ID);
                precision = product.getUOMPrecision();
            }
            QtyEntered = QtyEntered.setScale(precision, BigDecimal.ROUND_HALF_DOWN);
            //
            log.fine("Line QtyEntered=" + QtyEntered + ", Product_ID=" + M_Product_ID + ", OrderLine_ID=" + C_OrderLine_ID + ", InOutLine_ID=" + M_InOutLine_ID);
            //	Create new Invoice Line
            MInvoiceLine invoiceLine = new MInvoiceLine(invoice);
            //	Line UOM
            invoiceLine.setM_Product_ID(M_Product_ID, C_UOM_ID);
            //	Invoiced/Entered
            invoiceLine.setQty(QtyEntered);
            BigDecimal QtyInvoiced = null;
            if (M_Product_ID > 0 && product.getC_UOM_ID() != C_UOM_ID) {
                QtyInvoiced = MUOMConversion.convertProductFrom(Env.getCtx(), M_Product_ID, C_UOM_ID, QtyEntered);
            }
            if (QtyInvoiced == null)
                QtyInvoiced = QtyEntered;
            invoiceLine.setQtyInvoiced(QtyInvoiced);
            //  Info
            MOrderLine orderLine = null;
            if (C_OrderLine_ID != 0)
                orderLine = new MOrderLine(Env.getCtx(), C_OrderLine_ID, trxName);
            //
            MRMALine rmaLine = null;
            if (M_RMALine_ID > 0)
                rmaLine = new MRMALine(Env.getCtx(), M_RMALine_ID, null);
            //
            MInOutLine inoutLine = null;
            if (M_InOutLine_ID != 0) {
                inoutLine = new MInOutLine(Env.getCtx(), M_InOutLine_ID, trxName);
                if (orderLine == null && inoutLine.getC_OrderLine_ID() != 0) {
                    C_OrderLine_ID = inoutLine.getC_OrderLine_ID();
                    orderLine = new MOrderLine(Env.getCtx(), C_OrderLine_ID, trxName);
                }
            } else if (C_OrderLine_ID > 0) {
                String whereClause = "EXISTS (SELECT 1 FROM M_InOut io WHERE io.M_InOut_ID=M_InOutLine.M_InOut_ID AND io.DocStatus IN ('CO','CL'))";
                MInOutLine[] lines = MInOutLine.getOfOrderLine(Env.getCtx(), C_OrderLine_ID, whereClause, trxName);
                log.fine("Receipt Lines with OrderLine = #" + lines.length);
                if (lines.length > 0) {
                    for (int j = 0; j < lines.length; j++) {
                        MInOutLine line = lines[j];
                        if (line.getQtyEntered().compareTo(QtyEntered) == 0) {
                            inoutLine = line;
                            M_InOutLine_ID = inoutLine.getM_InOutLine_ID();
                            break;
                        }
                    }
                    if (inoutLine == null) {
                        //	first as default
                        inoutLine = lines[0];
                        M_InOutLine_ID = inoutLine.getM_InOutLine_ID();
                    }
                }
            } else if (M_RMALine_ID != 0) {
                String whereClause = "EXISTS (SELECT 1 FROM M_InOut io WHERE io.M_InOut_ID=M_InOutLine.M_InOut_ID AND io.DocStatus IN ('CO','CL'))";
                MInOutLine[] lines = MInOutLine.getOfRMALine(Env.getCtx(), M_RMALine_ID, whereClause, null);
                log.fine("Receipt Lines with RMALine = #" + lines.length);
                if (lines.length > 0) {
                    for (int j = 0; j < lines.length; j++) {
                        MInOutLine line = lines[j];
                        if (rmaLine.getQty().compareTo(QtyEntered) == 0) {
                            inoutLine = line;
                            M_InOutLine_ID = inoutLine.getM_InOutLine_ID();
                            break;
                        }
                    }
                    if (rmaLine == null) {
                        //	first as default
                        inoutLine = lines[0];
                        M_InOutLine_ID = inoutLine.getM_InOutLine_ID();
                    }
                }
            }
            //	Shipment Info
            if (inoutLine != null) {
                //	overwrites
                invoiceLine.setShipLine(inoutLine);
            } else {
                log.fine("No Receipt Line");
                //	Order Info
                if (orderLine != null) {
                    //	overwrites
                    invoiceLine.setOrderLine(orderLine);
                } else {
                    log.fine("No Order Line");
                    invoiceLine.setPrice();
                    invoiceLine.setTax();
                }
                //RMA Info
                if (rmaLine != null) {
                    //	overwrites
                    invoiceLine.setRMALine(rmaLine);
                } else
                    log.fine("No RMA Line");
            }
            invoiceLine.saveEx();
        }
    //   if selected
    }
    return true;
}
Also used : MProduct(org.compiere.model.MProduct) MInOutLine(org.compiere.model.MInOutLine) MInvoiceLine(org.compiere.model.MInvoiceLine) MInvoice(org.compiere.model.MInvoice) KeyNamePair(org.compiere.util.KeyNamePair) MOrderLine(org.compiere.model.MOrderLine) MRMALine(org.compiere.model.MRMALine) BigDecimal(java.math.BigDecimal)

Example 10 with MInOutLine

use of org.compiere.model.MInOutLine in project adempiere by adempiere.

the class MInvoiceTest method testQuery.

public void testQuery() throws Exception {
    MInvoice.setIsPaid(getCtx(), BPARTNER_TreeFarm, getTrxName());
    MInvoice[] invoices = MInvoice.getOfBPartner(getCtx(), BPARTNER_TreeFarm, getTrxName());
    assertTrue("Partner " + BPARTNER_TreeFarm + " should have invoices", invoices.length > 0);
    for (MInvoice invoice : invoices) {
        // test query
        invoice.getLines(true);
        // test query
        invoice.getTaxes(true);
    }
    //test MinvoiceLine getOfInOutLine
    //get InOutLine thats from InvoiceLine
    MInOutLine iol = new MInOutLine(getCtx(), 101, getTrxName());
    MInvoiceLine invl = MInvoiceLine.getOfInOutLine(iol);
    assertTrue("getOfInOutLine must work", invl.get_ID() > 0);
}
Also used : MInOutLine(org.compiere.model.MInOutLine) MInvoiceLine(org.compiere.model.MInvoiceLine) MInvoice(org.compiere.model.MInvoice)

Aggregations

MInOutLine (org.compiere.model.MInOutLine)42 MInOut (org.compiere.model.MInOut)22 BigDecimal (java.math.BigDecimal)19 MOrderLine (org.compiere.model.MOrderLine)15 MInvoiceLine (org.compiere.model.MInvoiceLine)10 MProduct (org.compiere.model.MProduct)10 MMatchPO (org.compiere.model.MMatchPO)9 MInvoice (org.compiere.model.MInvoice)8 MOrder (org.compiere.model.MOrder)8 MMatchInv (org.compiere.model.MMatchInv)7 MInventoryLine (org.compiere.model.MInventoryLine)6 MMovementLine (org.compiere.model.MMovementLine)6 MRMALine (org.compiere.model.MRMALine)6 MTransaction (org.compiere.model.MTransaction)6 ArrayList (java.util.ArrayList)5 MLandedCostAllocation (org.compiere.model.MLandedCostAllocation)5 MStorage (org.compiere.model.MStorage)5 AdempiereException (org.adempiere.exceptions.AdempiereException)4 MCostElement (org.compiere.model.MCostElement)4 MCostType (org.compiere.model.MCostType)4