Me parece que sí, hay algo raro (a mi me ha pasado crear un remito de entrada que no parece incrementar el stock…).
No lo testie pero estoy casi seguro que el problema esta aca:
MInOut.checkMaterialPolicy()
Busca la siguiente sección de código:
if( storage.getQtyOnHand().compareTo( qtyToDeliver ) >= 0 ) {
line.setM_AttributeSetInstance_ID( storage.getM_AttributeSetInstance_ID());
needSave = true;
log.config( “Direct – ” + line );
qtyToDeliver = Env.ZERO;
} else {
Eso lo que hace es modificar el M_AttributeSetInstance_ID de la linea de remito a algo que en general es distinto de cero. Posteriormente en el completeIt , al tener un linea M_AttributeSetInstance_ID distinto de cero se hace una hace, creo, una chequeo de cantidad de stock actual incorrecto.
No lo testie, pero cambiando la primer sección que puse por esta:
if( storage.getQtyOnHand().compareTo( qtyToDeliver ) >= 0 ) {
//line.setM_AttributeSetInstance_ID( storage.getM_AttributeSetInstance_ID());
//needSave = true;
//log.config( “Direct – ” + line );
//qtyToDeliver = Env.ZERO;
MInOutLineMA ma = new
MInOutLineMA( line,
storage.getM_AttributeSetInstance_ID(),
qtyToDeliver);
if( !ma.save()) {
;
}
qtyToDeliver = Env.ZERO;
} else
Tal vez ande, ya que de esta manera nunca se modifica el M_AttributeSet_ID de la linea (pero requiere crear un MInOutLineMA como en todos los demás casos), y el completeIt en teoría haría el chequeo de stock correcto.
No se si anda, pero casi seguro que por ahí viene la cosa (en realidad, todo eso código es medio raro…).
En cualquier caso , si podes desde pgAdmin ejecuta la siguientes sentencias (seleccionando previamente la base de datos en cuestion y abriendo un editor de sentencias)
set search_path to libertya;
select * from M_Storage
where M_Product_ID =
y postea lo que te muestra; tenes que reemplazar