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