1 Proceso de valoración

Para los almacenes seleccionados, el proceso de valoración de existencias analiza todos los movimientos del periodo seleccionado y calcula el coste a fin de periodo para cada uno de los almacenes. Además, se analizan suministros, movimientos internos y expediciones.

El resultado es el stock valorado a fin de periodo para los almacenes seleccionados, y se guarda en el registro de valoraciones de stock galmvalo:

Menu path:
[SOAPException: faultCode=SOAP-ENV:Protocol; msg=Unsupported response content type "text/html;charset=utf-8", must be: "text/xml". Response was: Error ] at org.apache.soap.rpc.Call.getEnvelopeString(Call.java:248) at org.apache.soap.rpc.Call.invoke(Call.java:314) at org.apache.soap.api.client.SOAPHTTPClient.__getResponse(SOAPHTTPClient.java:481) at org.apache.soap.api.client.SOAPHTTPClient.__doSOAPCall(SOAPHTTPClient.java:418) at org.apache.soap.api.client.SOAPHTTPClient.doSOAPCall(SOAPHTTPClient.java:346) at deister.axional.server.soap.client.SOAPClient.__doSOAPCall(SOAPClient.java:715) at deister.axional.server.soap.client.SOAPClient.doSOAPCall(SOAPClient.java:570) at deister.axional.docs.xsl.CMSSOAPClient.__doSOAPCall(CMSSOAPClient.java:116) at deister.axional.docs.xsl.CMSSOAPClient.__doSOAPCall(CMSSOAPClient.java:101) at deister.axional.docs.xsl.CMSSOAPClient.getDictionaryObjectData(CMSSOAPClient.java:214) at jdk.internal.reflect.GeneratedMethodAccessor1162.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.apache.xalan.extensions.ExtensionHandlerJavaPackage.callFunction(ExtensionHandlerJavaPackage.java:343) at org.apache.xalan.extensions.ExtensionHandlerJavaPackage.callFunction(ExtensionHandlerJavaPackage.java:440) at org.apache.xalan.extensions.ExtensionsTable.extFunction(ExtensionsTable.java:222) at org.apache.xalan.transformer.TransformerImpl.extFunction(TransformerImpl.java:475) at org.apache.xpath.functions.FuncExtFunction.execute(FuncExtFunction.java:208) at org.apache.xpath.objects.XRTreeFragSelectWrapper.execute(XRTreeFragSelectWrapper.java:69) at org.apache.xpath.XPath.execute(XPath.java:337) at org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:280) at org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:248) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:394) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:248) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:141) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:128) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2272) at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1358) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:711) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1275) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1253) at deister.axional.server.lang.xsl.XSLProcessor.__execute(XSLProcessor.java:866) at deister.axional.server.lang.xsl.XSLProcessor$4.call(XSLProcessor.java:702) at deister.axional.server.lang.xsl.XSLProcessor$4.call(XSLProcessor.java:694) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) at java.base/java.lang.Thread.run(Thread.java:832)

El sistema permite establecer sistemas de valoración distintos para cada almacén, contemplando:

  • PMP(Precio Medio Ponderado): Es una forma de valoración que se obtiene luego de realizar el cálculo del valor medio de las existencias que había al inicio y de las entradas ponderadas según sus cantidades.
  • FIFO: Tiene que ver con la forma en la que mueven las existencias o mercancías, primera en entrar (first in), primera en salir (first out).
  • LIFO: Es un método por el cual la última unidad de carga en entrar (last in) al almacén será la primera en salir (first out) del mismo.
  • Coste estándar: Es definible y parametrizable a través del módulo de rutas de costes que contempla el sistema.
El sistema de valoración se asocia a cada almacén en el registro de almacenes.

La periodicidad de la valoración del stock o inventario por almacén no la decide el sistema, sino la propia organización es quien decide si será diario, semanal, mensual, etc. Para ello, no existen procesos irreversibles, así que, si es necesario la realización de alguna regularización o ajuste, el sistema contempla la posibilidad de realizar la valoración las veces que sean necesarias.

Cuando se realiza una valoración de stocks, el sistema añade en el registro de valoraciones de stock los resultados obtenidos por cada proceso realizado, en base a la fecha final de cada uno de los períodos valorados. El acceso a los registros de valoración está en:

Menu path:
[SOAPException: faultCode=SOAP-ENV:Protocol; msg=Unsupported response content type "text/html;charset=utf-8", must be: "text/xml". Response was: Error ] at org.apache.soap.rpc.Call.getEnvelopeString(Call.java:248) at org.apache.soap.rpc.Call.invoke(Call.java:314) at org.apache.soap.api.client.SOAPHTTPClient.__getResponse(SOAPHTTPClient.java:481) at org.apache.soap.api.client.SOAPHTTPClient.__doSOAPCall(SOAPHTTPClient.java:418) at org.apache.soap.api.client.SOAPHTTPClient.doSOAPCall(SOAPHTTPClient.java:346) at deister.axional.server.soap.client.SOAPClient.__doSOAPCall(SOAPClient.java:715) at deister.axional.server.soap.client.SOAPClient.doSOAPCall(SOAPClient.java:570) at deister.axional.docs.xsl.CMSSOAPClient.__doSOAPCall(CMSSOAPClient.java:116) at deister.axional.docs.xsl.CMSSOAPClient.__doSOAPCall(CMSSOAPClient.java:101) at deister.axional.docs.xsl.CMSSOAPClient.getDictionaryObjectData(CMSSOAPClient.java:214) at jdk.internal.reflect.GeneratedMethodAccessor1162.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.apache.xalan.extensions.ExtensionHandlerJavaPackage.callFunction(ExtensionHandlerJavaPackage.java:300) at org.apache.xalan.extensions.ExtensionHandlerJavaPackage.callFunction(ExtensionHandlerJavaPackage.java:440) at org.apache.xalan.extensions.ExtensionsTable.extFunction(ExtensionsTable.java:222) at org.apache.xalan.transformer.TransformerImpl.extFunction(TransformerImpl.java:475) at org.apache.xpath.functions.FuncExtFunction.execute(FuncExtFunction.java:208) at org.apache.xpath.objects.XRTreeFragSelectWrapper.execute(XRTreeFragSelectWrapper.java:69) at org.apache.xpath.XPath.execute(XPath.java:337) at org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:280) at org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:248) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:394) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:248) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:141) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:128) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2272) at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1358) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:711) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1275) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1253) at deister.axional.server.lang.xsl.XSLProcessor.__execute(XSLProcessor.java:866) at deister.axional.server.lang.xsl.XSLProcessor$4.call(XSLProcessor.java:702) at deister.axional.server.lang.xsl.XSLProcessor$4.call(XSLProcessor.java:694) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) at java.base/java.lang.Thread.run(Thread.java:832)

El proceso de valoración se ejecuta en la opción de menú:

Menu path:
[SOAPException: faultCode=SOAP-ENV:Protocol; msg=Unsupported response content type "text/html;charset=utf-8", must be: "text/xml". Response was: Error ] at org.apache.soap.rpc.Call.getEnvelopeString(Call.java:248) at org.apache.soap.rpc.Call.invoke(Call.java:314) at org.apache.soap.api.client.SOAPHTTPClient.__getResponse(SOAPHTTPClient.java:481) at org.apache.soap.api.client.SOAPHTTPClient.__doSOAPCall(SOAPHTTPClient.java:418) at org.apache.soap.api.client.SOAPHTTPClient.doSOAPCall(SOAPHTTPClient.java:346) at deister.axional.server.soap.client.SOAPClient.__doSOAPCall(SOAPClient.java:715) at deister.axional.server.soap.client.SOAPClient.doSOAPCall(SOAPClient.java:570) at deister.axional.docs.xsl.CMSSOAPClient.__doSOAPCall(CMSSOAPClient.java:116) at deister.axional.docs.xsl.CMSSOAPClient.__doSOAPCall(CMSSOAPClient.java:101) at deister.axional.docs.xsl.CMSSOAPClient.getDictionaryObjectData(CMSSOAPClient.java:214) at jdk.internal.reflect.GeneratedMethodAccessor1162.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.apache.xalan.extensions.ExtensionHandlerJavaPackage.callFunction(ExtensionHandlerJavaPackage.java:300) at org.apache.xalan.extensions.ExtensionHandlerJavaPackage.callFunction(ExtensionHandlerJavaPackage.java:440) at org.apache.xalan.extensions.ExtensionsTable.extFunction(ExtensionsTable.java:222) at org.apache.xalan.transformer.TransformerImpl.extFunction(TransformerImpl.java:475) at org.apache.xpath.functions.FuncExtFunction.execute(FuncExtFunction.java:208) at org.apache.xpath.objects.XRTreeFragSelectWrapper.execute(XRTreeFragSelectWrapper.java:69) at org.apache.xpath.XPath.execute(XPath.java:337) at org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:280) at org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:248) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:394) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:248) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:141) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:128) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2272) at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1358) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:711) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1275) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1253) at deister.axional.server.lang.xsl.XSLProcessor.__execute(XSLProcessor.java:866) at deister.axional.server.lang.xsl.XSLProcessor$4.call(XSLProcessor.java:702) at deister.axional.server.lang.xsl.XSLProcessor$4.call(XSLProcessor.java:694) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) at java.base/java.lang.Thread.run(Thread.java:832)

Dado que no se trata de un proceso reversible, existe el proceso contrario, es decir el proceso de apertura:

Menu path:
[SOAPException: faultCode=SOAP-ENV:Protocol; msg=Unsupported response content type "text/html;charset=utf-8", must be: "text/xml". Response was: Error ] at org.apache.soap.rpc.Call.getEnvelopeString(Call.java:248) at org.apache.soap.rpc.Call.invoke(Call.java:314) at org.apache.soap.api.client.SOAPHTTPClient.__getResponse(SOAPHTTPClient.java:481) at org.apache.soap.api.client.SOAPHTTPClient.__doSOAPCall(SOAPHTTPClient.java:418) at org.apache.soap.api.client.SOAPHTTPClient.doSOAPCall(SOAPHTTPClient.java:346) at deister.axional.server.soap.client.SOAPClient.__doSOAPCall(SOAPClient.java:715) at deister.axional.server.soap.client.SOAPClient.doSOAPCall(SOAPClient.java:570) at deister.axional.docs.xsl.CMSSOAPClient.__doSOAPCall(CMSSOAPClient.java:116) at deister.axional.docs.xsl.CMSSOAPClient.__doSOAPCall(CMSSOAPClient.java:101) at deister.axional.docs.xsl.CMSSOAPClient.getDictionaryObjectData(CMSSOAPClient.java:214) at jdk.internal.reflect.GeneratedMethodAccessor1162.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.apache.xalan.extensions.ExtensionHandlerJavaPackage.callFunction(ExtensionHandlerJavaPackage.java:300) at org.apache.xalan.extensions.ExtensionHandlerJavaPackage.callFunction(ExtensionHandlerJavaPackage.java:440) at org.apache.xalan.extensions.ExtensionsTable.extFunction(ExtensionsTable.java:222) at org.apache.xalan.transformer.TransformerImpl.extFunction(TransformerImpl.java:475) at org.apache.xpath.functions.FuncExtFunction.execute(FuncExtFunction.java:208) at org.apache.xpath.objects.XRTreeFragSelectWrapper.execute(XRTreeFragSelectWrapper.java:69) at org.apache.xpath.XPath.execute(XPath.java:337) at org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:280) at org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:248) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:394) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:248) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:141) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:128) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2272) at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1358) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:711) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1275) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1253) at deister.axional.server.lang.xsl.XSLProcessor.__execute(XSLProcessor.java:866) at deister.axional.server.lang.xsl.XSLProcessor$4.call(XSLProcessor.java:702) at deister.axional.server.lang.xsl.XSLProcessor$4.call(XSLProcessor.java:694) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) at java.base/java.lang.Thread.run(Thread.java:832)

La periodicidad del proceso de valoración la decide el usuario que lanza el proceso. Cada almacén se puede valorar con periocidad diferente.

Los almacenes entre los que hay traspasos de mercancía se han de valorar conjuntamente para que el sistema pueda calcular correctamente el coste de los traspasos.

Los periodos a valorar han de ser consecutivos, el sistema no permite dejar intervalo de tiempo no valorados entre periodos valorados.

Una vez realizada la valoración de un almacén, el sistema no permite añadir, modificar, o eliminar movimientos de los periodos valorados.

2 Fases del proceso

El proceso de valoración en función de la cantidad de referencias del almacén o almacenes a valorar, y en función del número de movimientos a procesar, puede durar un intervalo de tiempo considerable. El proceso pasa por una serie de fases que se comentan a continuación:

  • Inicialmente se marca la fecha de valoración en progreso de los almacenes procesados, para que no se puedan modificar movimientos del periodo a valorar.
  • A continuación, se copian los registros de valoración del periodo anterior, con fecha de valoración fecha fin de periodo.
  • En este punto comienza a procesar movimientos ordenados de forma ascendiente por fecha y por identificador de cabecera. El sistema por defecto, dentro de un mismo día procesa primero las entradas y luego las salidas, pero existe un indicador en la tipología de movimiento que indica el orden a ser procesado en la valoración.
  • Si hay ventas de TPV transferidas al módulo de retail, el proceso de valoración se encarga de procesarlas de igual forma que los movimientos logísticos.
  • Una vez procesados todos los movimientos y ventas del periodo, se verifica si hay albaranes que se valoran a precio medio, y se asegura que su precio sea igual que el coste calculado, además se validan dichos albaranes.
  • A continuación, si hay recuentos de cierre a fecha fin de periodo para los almacenes valorados. Si los hay, se generan los ajustes requeridos.
  • Finalmente, se marca la fecha de valoración de todos los almacenes procesados.

3 Cálculo del coste

En la tipología de movimientos internos hay un indicador que decide como se calcula el coste de cada tipo de movimiento durante la valoración de stock. Los posibles valores de este indicador son:

  • N. Tipo de valoración Normal.

    Este tipo de valoración es el que se utiliza para todo tipo de movimientos de expediciones de salida, ya que el coste al que se valora el movimiento es el que exista en ese momento en el registro de valoraciones. Ejemplo de movimientos de este tipo son cualquier salida: entregas y servicios a clientes, recuentos negativos, etc. También se utiliza para todos los movimientos de traspaso, ya que en todo traspaso, lo habiltual es que los artículos salgan del almacén origen y entren en el destino. En el caso del almacén origen, por tratarse de una salida se valorará a tipo normal, y para el almacén destino, por tratarse de una entrada procedente de otro almacén propio, se valora al mismo coste que el de salida del almacén origen.

  • T. Transacción.

    Se utiliza para aquellos movimientos internos a los que no se puede obtener el coste de forma estándar. En estos casos, lo que se hace es informar el coste al cual se desea valorar dicho movimiento en el precio de las líneas de estos movimientos. El sistema, con este valor del indicador, valora las líneas con el valor indicado en el precio. Un ejemplo puede ser un recuento positivo, ya que no se puede obtener, de forma estándar, el coste para poder valorar movimientos de algo que ha salido de la nada.

  • O. Valoración según documento Origen.

    Generalmente se utiliza para los movimientos de recepción de compras o las devoluciones de ventas. El indicar este valor significa que dichas entradas de stock se desean valorar al precio (en la moneda local) existente en el documento origen que el movimiento tiene referenciado. El documento origen puede ser un pedido de compras para recepciones, un pedido de ventas para salidas, un albarán de ventas para devoluciones, etc.

  • D. Valoración según documento destino.

    Como generalmente, el documento destino suele ser un albarán de ventas, el hecho de que se utilice este valor y no el anterior, reside en el hecho de que los precios del albarán son más reales que los del pedido; ya sean en moneda local o en divisa, ya que si son en divisa, los cambios aplicados serán más recientes que los aplicados en el pedido. Por tanto, el coste al que se valore cualquier expedición siempre será más real.