IDEMPIERE-2168 Product with ASI Mandatory Type = When Shipping is still mandatory on sales orders (#976)
This commit is contained in:
parent
f4764b1411
commit
8db15d01d1
|
|
@ -1194,7 +1194,7 @@ public class MInOut extends X_M_InOut implements DocAction
|
||||||
//
|
//
|
||||||
if (line.getM_AttributeSetInstance_ID() != 0)
|
if (line.getM_AttributeSetInstance_ID() != 0)
|
||||||
continue;
|
continue;
|
||||||
if (product != null && product.isASIMandatory(isSOTrx()))
|
if (product != null && product.isASIMandatoryFor(MAttributeSet.MANDATORYTYPE_WhenShipping,isSOTrx()))
|
||||||
{
|
{
|
||||||
if (product.getAttributeSet() != null && !product.getAttributeSet().excludeTableEntry(MInOutLine.Table_ID, isSOTrx())) {
|
if (product.getAttributeSet() != null && !product.getAttributeSet().excludeTableEntry(MInOutLine.Table_ID, isSOTrx())) {
|
||||||
BigDecimal qtyDiff = line.getMovementQty();
|
BigDecimal qtyDiff = line.getMovementQty();
|
||||||
|
|
|
||||||
|
|
@ -380,7 +380,7 @@ public class MInventory extends X_M_Inventory implements DocAction
|
||||||
if (line.getM_AttributeSetInstance_ID() == 0)
|
if (line.getM_AttributeSetInstance_ID() == 0)
|
||||||
{
|
{
|
||||||
MProduct product = MProduct.get(getCtx(), line.getM_Product_ID(), get_TrxName());
|
MProduct product = MProduct.get(getCtx(), line.getM_Product_ID(), get_TrxName());
|
||||||
if (product != null && product.isASIMandatory(line.isSOTrx()))
|
if (product != null && product.isASIMandatoryFor(null, line.isSOTrx()))
|
||||||
{
|
{
|
||||||
if (product.getAttributeSet() != null && !product.getAttributeSet().excludeTableEntry(MInventoryLine.Table_ID, line.isSOTrx())) {
|
if (product.getAttributeSet() != null && !product.getAttributeSet().excludeTableEntry(MInventoryLine.Table_ID, line.isSOTrx())) {
|
||||||
MDocType dt = MDocType.get(getC_DocType_ID());
|
MDocType dt = MDocType.get(getC_DocType_ID());
|
||||||
|
|
|
||||||
|
|
@ -294,7 +294,7 @@ public class MMovement extends X_M_Movement implements DocAction
|
||||||
// Mandatory Instance
|
// Mandatory Instance
|
||||||
MProduct product = line.getProduct();
|
MProduct product = line.getProduct();
|
||||||
if (line.getM_AttributeSetInstance_ID() == 0) {
|
if (line.getM_AttributeSetInstance_ID() == 0) {
|
||||||
if (product != null && product.isASIMandatory(true)) {
|
if (product != null && product.isASIMandatoryFor(null, true)) {
|
||||||
if (product.getAttributeSet() != null && !product.getAttributeSet().excludeTableEntry(MMovementLine.Table_ID, true)) { // outgoing
|
if (product.getAttributeSet() != null && !product.getAttributeSet().excludeTableEntry(MMovementLine.Table_ID, true)) { // outgoing
|
||||||
BigDecimal qtyDiff = line.getMovementQty();
|
BigDecimal qtyDiff = line.getMovementQty();
|
||||||
// verify if the ASIs are captured on lineMA
|
// verify if the ASIs are captured on lineMA
|
||||||
|
|
@ -315,7 +315,7 @@ public class MMovement extends X_M_Movement implements DocAction
|
||||||
}
|
}
|
||||||
if (line.getM_AttributeSetInstanceTo_ID() == 0)
|
if (line.getM_AttributeSetInstanceTo_ID() == 0)
|
||||||
{
|
{
|
||||||
if (product != null && product.isASIMandatory(false) && line.getM_AttributeSetInstanceTo_ID() == 0)
|
if (product != null && product.isASIMandatoryFor(null, false) && line.getM_AttributeSetInstanceTo_ID() == 0)
|
||||||
{
|
{
|
||||||
if (product.getAttributeSet() != null && !product.getAttributeSet().excludeTableEntry(MMovementLine.Table_ID, false)) { // incoming
|
if (product.getAttributeSet() != null && !product.getAttributeSet().excludeTableEntry(MMovementLine.Table_ID, false)) { // incoming
|
||||||
m_processMsg = "@Line@ " + line.getLine() + ": @FillMandatory@ @M_AttributeSetInstanceTo_ID@";
|
m_processMsg = "@Line@ " + line.getLine() + ": @FillMandatory@ @M_AttributeSetInstanceTo_ID@";
|
||||||
|
|
|
||||||
|
|
@ -1373,7 +1373,7 @@ public class MOrder extends X_C_Order implements DocAction
|
||||||
for (MOrderLine line : getLines()) {
|
for (MOrderLine line : getLines()) {
|
||||||
if (line.getM_Product_ID() > 0 && line.getM_AttributeSetInstance_ID() == 0) {
|
if (line.getM_Product_ID() > 0 && line.getM_AttributeSetInstance_ID() == 0) {
|
||||||
MProduct product = line.getProduct();
|
MProduct product = line.getProduct();
|
||||||
if (product.isASIMandatory(isSOTrx())) {
|
if (product.isASIMandatoryFor(null, isSOTrx())) {
|
||||||
if (product.getAttributeSet() != null && !product.getAttributeSet().excludeTableEntry(MOrderLine.Table_ID, isSOTrx())) {
|
if (product.getAttributeSet() != null && !product.getAttributeSet().excludeTableEntry(MOrderLine.Table_ID, isSOTrx())) {
|
||||||
StringBuilder msg = new StringBuilder("@M_AttributeSet_ID@ @IsMandatory@ (@Line@ #")
|
StringBuilder msg = new StringBuilder("@M_AttributeSet_ID@ @IsMandatory@ (@Line@ #")
|
||||||
.append(line.getLine())
|
.append(line.getLine())
|
||||||
|
|
|
||||||
|
|
@ -882,8 +882,18 @@ public class MProduct extends X_M_Product implements ImmutablePOSupport
|
||||||
* @param isSOTrx is outgoing trx?
|
* @param isSOTrx is outgoing trx?
|
||||||
* @return true if ASI is mandatory, false otherwise
|
* @return true if ASI is mandatory, false otherwise
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public boolean isASIMandatory(boolean isSOTrx) {
|
public boolean isASIMandatory(boolean isSOTrx) {
|
||||||
//
|
return isASIMandatoryFor(null, isSOTrx);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if ASI is mandatory according to mandatory type
|
||||||
|
* @param mandatoryType
|
||||||
|
* @param isSOTrx
|
||||||
|
* @return true if ASI is mandatory, false otherwise
|
||||||
|
*/
|
||||||
|
public boolean isASIMandatoryFor(String mandatoryType, boolean isSOTrx) {
|
||||||
// If CostingLevel is BatchLot ASI is always mandatory - check all client acct schemas
|
// If CostingLevel is BatchLot ASI is always mandatory - check all client acct schemas
|
||||||
MAcctSchema[] mass = MAcctSchema.getClientAcctSchema(getCtx(), getAD_Client_ID(), get_TrxName());
|
MAcctSchema[] mass = MAcctSchema.getClientAcctSchema(getCtx(), getAD_Client_ID(), get_TrxName());
|
||||||
for (MAcctSchema as : mass)
|
for (MAcctSchema as : mass)
|
||||||
|
|
@ -899,14 +909,15 @@ public class MProduct extends X_M_Product implements ImmutablePOSupport
|
||||||
if (M_AttributeSet_ID != 0)
|
if (M_AttributeSet_ID != 0)
|
||||||
{
|
{
|
||||||
MAttributeSet mas = MAttributeSet.get(getCtx(), M_AttributeSet_ID);
|
MAttributeSet mas = MAttributeSet.get(getCtx(), M_AttributeSet_ID);
|
||||||
if (mas == null || !mas.isInstanceAttribute())
|
if (mas == null || !mas.isInstanceAttribute()){
|
||||||
return false;
|
return false;
|
||||||
// Outgoing transaction
|
} else if (isSOTrx){ // Outgoing transaction
|
||||||
else if (isSOTrx)
|
return mas.isMandatoryAlways() || (mas.isMandatory() && mas.getMandatoryType().equals(mandatoryType));
|
||||||
return mas.isMandatory();
|
}
|
||||||
// Incoming transaction
|
// Incoming transaction
|
||||||
else // isSOTrx == false
|
else{ // isSOTrx == false
|
||||||
return mas.isMandatoryAlways();
|
return mas.isMandatoryAlways();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
// Default not mandatory
|
// Default not mandatory
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue