Mercator permet d'automatiser la remise à zéro quotidienne de la caisse pour les modes de paiement non cash. Cela se met en place via l'exécution planifiée d'une procédure stockée fournie par Mercator : SP_RESET_NON_CASH.
Via l'éditeur de code de Mercator, il suffit de saisir cette requête :
exec SP_RESET_NON_CASH
et ensuite de choisir cet élément du bouton "Exécuter"
Cela permet de fixer une planification telle que celle-ci :
L'heure est fixée à 23h pour que l'inscription dans l'historique des encaissements s'effectue à la date du jour.
La fréquence est quotidienne. La procédure stockée détectera correctement les journées sans activité (par ex. le dimanche) et ne produira aucune modification dans ce cas.
Voir aussi : Exécution de requêtes planifiées
L'exécution planifiée d'une requête requiert que SQL Agent soit installé et fonctionnel. Cette fonctionnalité n'est donc pas disponible si la version de SQL est limitée à SQL Express. Dans ce cas, il est possible de provoquer l'exécution de la procédure stockée lors du retrait de caisse effectué pour le cash (remise en banque) dans Mercator. Ceci peut se faire avec ce customizer :
using System;
using System.Text;
using System.Windows.Forms;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using System.Data.SqlClient;
// <CompileWithRoslyn />
namespace Gescom
{
public class Customizer : MercatorUi.ICustomizers.ISqlCommandUpdater
{
public void SqlCommandUpdate(SqlCommand sqlCommandToModify, Form form)
{
if ((form is MercatorUi.Forms.Gescom.GescomCashDepositBankRemittingForm gescomCashDepositBankRemittingForm) && (gescomCashDepositBankRemittingForm.Type == MercatorUi.Forms.Gescom.GescomCashDepositBankRemittingForm.GescomCashDepositBankRemittingEnum.BankRemitting))
sqlCommandToModify.CommandText += "\r\n\r\n"
+ "exec SP_RESET_NON_CASH";
}
}
}
Depuis la version 11.0 de Mercator, cette procédure stockée existe aussi dans une version acceptant un paramètre @tiroir permettant de limiter cette remise à zéro à un seul tiroir.
CREATE PROCEDURE dbo.SP_RESET_NON_CASH_WITH_DRAWER @tiroir smallint
Si on utilise une requête planifiée, celle-ci doit simplement être adaptée avec le numéro de tiroir.
exec SP_RESET_NON_CASH_WITH_DRAWER 1
Si on utilise le code C# ci-dessus, il suffit de modifier la dernière ligne.
+ "exec SP_RESET_NON_CASH_WITH_DRAWER @tiroir";