Hola @mariaiberia59 y @nuria24,
@nuria24 tiene razón. El fragmento de código que has compartido de conorderfee/conorderfee.php es puramente para validación, es decir, para verificar si se deben realizar acciones posteriores, pero no contiene la lógica para aplicar el cargo en sí. El hookActionValidateOrderBefore es el último punto para hacer comprobaciones antes de que se cree el pedido, pero no siempre es el lugar ideal para modificar activamente los totales si la tarifa no se ha registrado previamente.
Para asegurar que el cargo se incluya, el módulo debe tener una lógica que lo añada explícitamente al carrito (por ejemplo, como un CartRule temporal o modificando los subtotales) antes de que llegue a este hook. Si el módulo está diseñado para aplicar la tarifa en este punto, el código dentro del hook necesitaría una llamada explícita a una función que añada el cargo. Aquí te muestro una idea de cómo se podría llamar a la lógica de aplicación si existiera dentro del módulo:
function hookActionValidateOrderBefore($params)
{
if (!(int) Configuration::get('CONORDERFEE_ENABLED')) {
return;
}
if (!isset($params['cart']) || !($params['cart'] instanceof Cart)) {
return;
}
// Asegurarse de que la tarifa condicional se aplique al carrito
$this->addConditionalFeeToOrder($params['cart'], $params['order']);
Este addConditionalFeeToOrder sería un método interno del módulo que se encargaría de añadir el cargo al carrito o al objeto de pedido antes de que se guarde. Si tu módulo actual no lo hace, es posible que necesites una solución más robusta. Para añadir recargos de manipulación o servicio condicionales de manera fiable, un módulo dedicado como el de MyPresta.eu gestiona estas complejidades de los hooks y la presentación del carrito.