Gestion des clients 'en compte' dans takepos

bonjour,
ayant profité de la mine d’infos de ce forum depuis plusieurs mois, je tenais a faire un retour sur les modifications que j’ai apporté a takepos afin de les adapter à mon usage. Je tiens une petite épicerie-brasserie-traiteur et mon besoin etait de pouvoir gérer facilement depuis la caisse le paiement différé des clients en compte.
à noter que je suis en version 8.0.2

Fonctionnalités :

  1. dans take pos :
    - pouvoir différer les paiement tout en validant les factures
    - afficher l’encours clients

  2. dans le module tiers onglet clients :
    - sortir un ticket récapitulatif de l’encours

Différer le paiement :

dans le fichier takepos/pay.php il faut ajouter un bouton pour le paiement différé.
vers la fin du fichier il suffit d’ajouter la ligne suivante :

<button type="button" class="calcbutton2" onclick="Validate('dif');"><?php echo "Différé"; ?></button>

juste après la ligne :

<button type="button" class="calcbutton" onclick="addreceived(0.05);">0.05</button>

dans le fichier takepos/invoice.php il faut conditionner la creation du reglement :
le bloc :

    $payment=new Paiement($db);
	$payment->datepaye=$now;
	$payment->bank_account=$bankaccount;
	$payment->amounts[$invoice->id]=$invoice->total_ttc;
	if ($pay=="cash") $payment->paiementid=4;
	else if ($pay=="card") $payment->paiementid=6;
	else if ($pay=="chq") $payment->paiementid=7;
	$payment->num_paiement=$invoice->facnumber;
	$payment->create($user);
	$payment->addPaymentToBank($user, 'payment', '(CustomerInvoicePayment)', $bankaccount, '', '');
	$invoice->set_paid($user);

devient :

    if($pay!='dif') //si mode de reglement different de dif (différé)
	{
        $payment=new Paiement($db);
        $payment->datepaye=$now;
        $payment->bank_account=$bankaccount;
        $payment->amounts[$invoice->id]=$invoice->total_ttc;
        if ($pay=="cash") $payment->paiementid=4;
        else if ($pay=="card") $payment->paiementid=6;
        else if ($pay=="chq") $payment->paiementid=7;
        $payment->num_paiement=$invoice->facnumber;
        $payment->create($user);
        $payment->addPaymentToBank($user, 'payment', '(CustomerInvoicePayment)', $bankaccount, '', '');
        $invoice->set_paid($user);
	}

Afficher l’encours clients :
dans takepos/invoice.php vers la fin du fichier :
le bloc :

    if ($invoice->socid!=$conf->global->CASHDESK_ID_THIRDPARTY){
        $soc = new Societe($db);
        $soc->id = $invoice->socid;
        $soc->fetch($invoice->socid);
        print '<p style="font-size:120%;" align="right">(';
        print $soc->name;
        print ')</p>';
    }

devient :

    if ($invoice->socid!=$conf->global->CASHDESK_ID_THIRDPARTY){
        $soc = new Societe($db);
        $soc->id = $invoice->socid;
        $soc->fetch($invoice->socid);
        print '<p style="font-size:120%;" align="right">(';
        print $soc->name;
        $tmpencours = $soc->getOutstandingBills(); //récuperer l'encours client
        $outstandingOpened=$tmpencours['opened'];
        print ')';
        if($outstandingOpened>0)
            print " Encours : ".$outstandingOpened;
        print '</p>';
    }


Sortir un ticket récapitulatif de l’encours :

copier le fichier receip_recap.php (ci-joint) dans le dossier takepos
dans le fichier takepos/class/actions_takepos.class.php dans la fonction addMoreActionsButtons
ajouter à la suite de ce bloc :

     if (in_array($parameters['currentcontext'], array('invoicecard')))		// do something only for the context 'somecontext1' or 'somecontext2'
	    {
			
			if (file_exists("../../takepos/receipt.php")) $receipt_url=DOL_URL_ROOT."/takepos/receipt.php";
			if (file_exists("../../custom/takepos/receipt.php")) $receipt_url=DOL_URL_ROOT."/custom/takepos/receipt.php";
	        print '<div class="inline-block divButAction"><a target="_blank" class="butAction" href="' . $receipt_url . '?facid=' . $object->id.'">' . $langs->trans('Ticket') .'</a></div>';
	    }

le bloc suivant :

     else if(in_array($parameters['currentcontext'], array('thirdpartycomm')))
	    {
            if (file_exists("../takepos/receipt_recap.php")) $receipt_url=DOL_URL_ROOT."/takepos/receipt_recap.php";
			if (file_exists("../custom/takepos/receipt_recap.php")) $receipt_url=DOL_URL_ROOT."/custom/takepos/receipt_recap.php";
	        print '<div class="inline-block divButAction"><a target="_blank" class="butAction" href="' . $receipt_url . '?socid=' . $object->id.'">' . $langs->trans('Ticket Récap') .'</a></div>';
	    }

il y a surement moyen de faire beaucoup mieux…

Pièces jointes :

Slt

ca serait bien de le proposer sur github

Salut,

ouep, je vais regarder comment marche GitHub.

je pense que je vais attendre d’avoir migré en v 10 (en cours) avant de faire une quelconque proposition…

Slt

Je te met un lien d aide

Le mieux est d avoir une version de test en local …

salut,

Merci pour le lien.

Concernant mon installation j’ai tout en local.
-> le ‹ serveur › de prod
-> une installe de ‹ dev › (celle qui est en migration). ou je fait toutes les modifs et tests
-> une installe de preprod ou je confronte les données et le fonctionnement de prod aux modifs validées
(des vieux reflexes qui me sont restés d’une autre vie…)

Il y a eu bcp de modif de takepos en v10 et v11; le code est donc à revalider pour la v11/dev :wink: et en effet a soumettre sur github

Salut à tous, y à t’il une avancé sur le sujet du paiement différé via Take POS ?

1 « J'aime »

Bonjour, notre Scic SAS est intéressée aussi par la possibilité de gérer les clients « en compte ».
Des informations sur ce développement ?
Merci par avance.

Bonjour,

Ce n’était pas à proprement parlé un développement, mais juste des adaptations légère… pour la V8…
Le temps que je me retourne c’était déjà la V10… et maintenant la V11…
Ma production etant toujours en V8 je ne posterais des modifs que le jour ou je passerais sur une version plus récente (peut etre la V15…)

Bon tant pis … mais je reste fortement intéressé par une astuce permettant de gérer ces clients en compte :slight_smile: