// Chromis POS - The New Face of Open Source POS
// Copyright (c) 2015
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
//
// Chromis POS is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Chromis POS is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see <http://www.gnu.org/licenses/>.
package uk.chromis.pos.inventory;
import uk.chromis.pos.panels.ComboItemLocal;
/**
*
* @author adrianromero
*/
public class MovementReason extends ComboItemLocal {
// The numeric key indicates whether this is an increase or decrease in stock level
// It is important to get the sign right.
public static final MovementReason IN_PURCHASE = new MovementReason(+1, "stock.in.purchase");
public static final MovementReason IN_REFUND = new MovementReason(+2, "stock.in.refund");
public static final MovementReason IN_MOVEMENT = new MovementReason(+4, "stock.in.movement");
public static final MovementReason IN_OPEN_PACK = new MovementReason(+5, "stock.in.openpack");
public static final MovementReason IN_STOCKCHANGE = new MovementReason(+7, "stock.in.stockchange");
public static final MovementReason IN_RECIPES = new MovementReason(+8, "stock.in.recipes");
public static final MovementReason OUT_SALE = new MovementReason(-1, "stock.out.sale");
public static final MovementReason OUT_REFUND = new MovementReason(-2, "stock.out.refund");
public static final MovementReason OUT_BREAK = new MovementReason(-3, "stock.out.break");
public static final MovementReason OUT_MOVEMENT = new MovementReason(-4, "stock.out.movement");
public static final MovementReason OUT_OPEN_PACK = new MovementReason(-5, "stock.out.openpack");
public static final MovementReason OUT_STOCKCHANGE = new MovementReason(-7, "stock.out.stockchange");
public static final MovementReason OUT_RECIPES = new MovementReason(-8, "stock.out.recipes");
/**
*
*/
public static final MovementReason OUT_CROSSING = new MovementReason(1000, "stock.out.crossing");
private MovementReason(Integer iKey, String sKeyValue) {
super(iKey, sKeyValue);
}
/**
*
* @return
*/
public boolean isInput() {
return m_iKey > 0;
}
/**
*
* @param d
* @return
*/
public Double samesignum(Double d) {
if (d == null || m_iKey == null) {
return d;
} else if ((m_iKey > 0 && d < 0.0)
|| (m_iKey < 0 && d > 0.0)) {
return -d;
} else {
return d;
}
}
/**
*
* @param dBuyPrice
* @param dSellPrice
* @return
*/
public Double getPrice(Double dBuyPrice, Double dSellPrice) {
if (this == IN_PURCHASE || this == OUT_REFUND || this == OUT_BREAK
|| this == IN_OPEN_PACK || this == OUT_OPEN_PACK || this == OUT_BREAK
|| this == IN_STOCKCHANGE || this == OUT_STOCKCHANGE) {
return dBuyPrice;
} else if (this == OUT_SALE || this == IN_REFUND) {
return dSellPrice;
} else {
return null;
}
}
}