• Este debate está vacío.
Viendo 3 entradas - de la 1 a la 3 (de un total de 3)
  • Autor
    Entradas
  • #32597
    Saulo Gil
    Miembro

    Creé un parche para poder limitar la cantidad máxima de líneas/artículos a cargar en el TPV durante la carga de artículos. Este límite puede configurarse por Compañia, Organización y/o Usuario. Estos son los pasos para su implementación.

    [ul]
    [li]Guardar el parche debajo en un archivo en la carpeta con el código fuente de Libertya 13.01[/li]
    [li]Aplicar el parche con patch -p0 < nombre-archivo[/li]
    [li]Instalar los mensajes de error (ver instalación de componentes )[/li]
    [li]Crear el valor predeterminado L_AR_MaxOrderLines en Configuración de la Compañia -> Datos -> Valores Predeterminados[/li]
    [/ul]

    Code:
    diff –git client/Src/org/openXpertya/pos/ctrl/PoSConnectionState.java client/Src/org/openXpertya/pos/ctrl/PoSConnectionState.java
    index 4f0a379..8697b15 100644
    — client/Src/org/openXpertya/pos/ctrl/PoSConnectionState.java
    +++ client/Src/org/openXpertya/pos/ctrl/PoSConnectionState.java
    @@ -110,6 +110,8 @@ public abstract class PoSConnectionState {

    public abstract Integer getMaxOrderLineQty();

    + public abstract Integer getMaxOrderLines();
    +
    public abstract String getNextInvoiceDocumentNo();

    public abstract List getOtherTaxes(IDocument document);
    @@ -210,4 +212,9 @@ public abstract class PoSConnectionState {
    public void setProcessListener(ASyncProcess processListener) {
    this.processListener = processListener;
    }
    +
    + public Integer getMaxOrderLinesQty() {
    + // TODO Auto-generated method stub
    + return null;
    + }
    }
    diff –git client/Src/org/openXpertya/pos/ctrl/PoSModel.java client/Src/org/openXpertya/pos/ctrl/PoSModel.java
    index 6627665..feec020 100644
    — client/Src/org/openXpertya/pos/ctrl/PoSModel.java
    +++ client/Src/org/openXpertya/pos/ctrl/PoSModel.java
    @@ -70,6 +70,9 @@ public class PoSModel {

    /** Cantidad máxima en una línea de pedido */
    private Integer maxOrderLineQty;
    +
    + /** Cantidad máxima de líneas en un pedido */
    + private Integer maxOrderLines;

    private boolean isCopyRep;

    @@ -79,6 +82,7 @@ public class PoSModel {
    setIntoOnlineMode();
    newOrder();
    getMaxOrderLineQty();
    + getMaxOrderLines();
    isCopyRep=true;
    }

    @@ -409,6 +413,11 @@ public class PoSModel {
    throw new ProductAddValidationFailed(product, “SurpassMaxOrderLineQty”);
    }

    + // La cantidad de líneas no debe superar el máximo configurado
    + if(countSurpassMaxLines(getOrder().getOrderProducts().size())){
    + throw new ProductAddValidationFailed(product, “SurpassMaxOrderLines”);
    + }
    +
    // Crea el artículo del pedido con la cantidad indicada y lo agrega al pedido
    // actual del TPV
    OrderProduct newOrderProduct = createOrderProduct(product);
    @@ -645,6 +654,13 @@ public class PoSModel {
    }
    return maxOrderLineQty;
    }
    +
    + public Integer getMaxOrderLines() {
    + if(maxOrderLines == null){
    + maxOrderLines = getConnectionState().getMaxOrderLines();
    + }
    + return maxOrderLines;
    + }

    /**
    * @param count cantidad
    @@ -655,6 +671,14 @@ public class PoSModel {
    }

    /**
    + * @param count cantidad
    + * @return si la cantidad de lineas supera el máximo configurado
    + */
    + public boolean countSurpassMaxLines(int count){
    + return getMaxOrderLines() != null && getMaxOrderLines() < ++count; + } + + /** * @return obtener el próximo nro de factura en caso que se deba crear una
    * factura, dependiendo de la configuración de TPV
    */
    diff --git client/Src/org/openXpertya/pos/ctrl/PoSOffline.java client/Src/org/openXpertya/pos/ctrl/PoSOffline.java
    index bda886b..f407d5b 100644
    --- client/Src/org/openXpertya/pos/ctrl/PoSOffline.java
    +++ client/Src/org/openXpertya/pos/ctrl/PoSOffline.java
    @@ -240,6 +240,12 @@ public class PoSOffline extends PoSConnectionState {
    }

    @Override
    + public Integer getMaxOrderLines() {
    + // TODO Auto-generated method stub
    + return null;
    + }
    +
    + @Override
    public String getNextInvoiceDocumentNo() {
    // TODO Auto-generated method stub
    return null;
    diff --git client/Src/org/openXpertya/pos/ctrl/PoSOnline.java client/Src/org/openXpertya/pos/ctrl/PoSOnline.java
    index dfb9200..1cd09e3 100644
    --- client/Src/org/openXpertya/pos/ctrl/PoSOnline.java
    +++ client/Src/org/openXpertya/pos/ctrl/PoSOnline.java
    @@ -131,6 +131,7 @@ public class PoSOnline extends PoSConnectionState {
    private final boolean CHECK_CUIT_CONTROL_ACTIVE = MCheckCuitControl.isCheckCUITControlActive();

    private final String MAX_ORDER_LINE_QTY_PREFERENCE_NAME = "L_AR_MaxOrderLineQty";
    + private final String MAX_ORDER_LINES_PREFERENCE_NAME = "L_AR_MaxOrderLines";

    // ID de pestañas utilizadas para obtener los reportes de impresión.
    private final int ORDER_TAB_ID = 186;
    @@ -3510,6 +3511,22 @@ public class PoSOnline extends PoSConnectionState {
    }

    @Override
    + public Integer getMaxOrderLines() {
    + Integer maxLines = null;
    + // Para locale ar verificamos la cantidad máxima de la preferencia
    + // configurada
    + if(LOCAL_AR_ACTIVE){
    + // Obtenerlo desde las preferencias
    + String maxLinesValue = MPreference.GetCustomPreferenceValue(
    + MAX_ORDER_LINES_PREFERENCE_NAME,
    + Env.getAD_Client_ID(getCtx()));
    + maxLines = Util.isEmpty(maxLinesValue, true) ? null : Integer
    + .valueOf(maxLinesValue);
    + }
    + return maxLines;
    + }
    +
    + @Override
    public String getNextInvoiceDocumentNo() {
    String documentNo = null;
    Integer docTypeID = 0;
    diff --git client/Src/org/openXpertya/pos/view/UpdateOrderProductDialog.java client/Src/org/openXpertya/pos/view/UpdateOrderProductDialog.java
    index dce6de1..91a7203 100644
    --- client/Src/org/openXpertya/pos/view/UpdateOrderProductDialog.java
    +++ client/Src/org/openXpertya/pos/view/UpdateOrderProductDialog.java
    @@ -103,6 +103,7 @@ public class UpdateOrderProductDialog extends JDialog {
    private String MSG_AMOUNT;
    private String MSG_SUPERVISOR_AUTH;
    private String MSG_SURPASS_MAX_QTY;
    + private String MSG_SURPASS_MAX_LINES;
    private String MSG_INVALID_PRICE;
    private String MSG_INVALID_FINAL_PRICE;
    private String MSG_INVALID_COUNT;
    @@ -164,6 +165,7 @@ public class UpdateOrderProductDialog extends JDialog {
    MSG_AMOUNT = getMsg("Amt");
    MSG_SUPERVISOR_AUTH = getMsg("SupervisorAuth");
    MSG_SURPASS_MAX_QTY = getMsg("SurpassMaxOrderLineQty");
    + MSG_SURPASS_MAX_LINES = getMsg("SurpassMaxOrderLines");
    MSG_INVALID_COUNT = getMsg("InvalidQty");
    MSG_INVALID_PRICE = getMsg("InvalidPrice");
    MSG_INVALID_FINAL_PRICE = getMsg("InvalidFinalPrice");
    @@ -971,6 +973,12 @@ public class UpdateOrderProductDialog extends JDialog {
    error = true;
    errorMsg.append(" ").append(MSG_SURPASS_MAX_QTY);
    }
    +
    + // Cantidad de líneas supera el máximo
    + if(getPoS().getModel().countSurpassMaxLines(getPoS().getModel().getOrder().getOrderProducts().size())){
    + error = true;
    + errorMsg.append(" ").append(MSG_SURPASS_MAX_LINES);
    + }

    if(error) {
    errorMsg(errorMsg.toString());

    #38108
    Federico Cristina
    Superadministrador

    Buenas,

    Muchas gracias por el aporte!

    Intentaremos verlo en breve a fin de poder incorporarlo en Libertya CORE.

    Saludos,
    Federico

    #38137
    Saulo Gil
    Miembro

    Buenísimo, yo creo que este cambio puede ser de bastante utilidad para los que facturamos utilizando formulario contínuo.

    Una cosa más que yo le haría es mostrar un cartel de información (no de error) luego de cargar el último artículo antes de llegar al límite. Actualmente con este parche se bloquea la carga del último artículo, antes de ser agregado al pedido.

    Saludos!

Viendo 3 entradas - de la 1 a la 3 (de un total de 3)
  • Debes estar registrado para responder a este debate.