Author: bpoussin Date: 2011-04-06 16:45:48 +0200 (Wed, 06 Apr 2011) New Revision: 58 Url: http://chorem.org/repositories/revision/chorem/58 Log: modification de Invoiceable et Invoice pour une utilisation/recherche plus simple que la solution pr?\195?\169c?\195?\169dente Modified: trunk/chorem-entities/src/main/xmi/chorem.zargo trunk/chorem-entities/src/site/rst/dataModel.rst Modified: trunk/chorem-entities/src/main/xmi/chorem.zargo =================================================================== (Binary files differ) Modified: trunk/chorem-entities/src/site/rst/dataModel.rst =================================================================== --- trunk/chorem-entities/src/site/rst/dataModel.rst 2011-04-06 01:00:47 UTC (rev 57) +++ trunk/chorem-entities/src/site/rst/dataModel.rst 2011-04-06 14:45:48 UTC (rev 58) @@ -59,37 +59,33 @@ ===== - Quotation: devis envoyé à un client en rapport avec un projet -- Invoice: facture envoyée à un client en rapport avec un Invoiceable - le champs invoiceablePart contient l'id + le numero de condition de - facturation. ex: UUID:2 indique que la facture provient de la condition 2 - de l'objet Invoiceable ayant comme id UUID. - Invoiceable: indique les conditions de facturation. Chaque facture a emettre doit avoir une condition et une valeur associee. La condition et la valeur associee sont evaluees en fonction du type mime indique. +- Invoice: facture envoyée à un client en rapport avec un Invoiceable Un devis accepté engendre un ProjectOrder. Lors de la création du ProjectOrder, on crée aussi les conditions de -facturation via la creation de Invoiceable soit comme extension -supplémentaire de ProjectOrder soit en extension supplémentaire sur les Task. +facturation via la creation de 1 ou N Invoiceable en indiquant via son +attribut target sur quel objet il porte. De cette facon il est possible +de mettre un Invoiceable sur tout type d'objet: Quotation, ProjectOrder, +Task, ... -Il est possible de mettre un Invoiceable sur tout type d'objet: Quotation, -ProjectOrder, Task, ... - -Par exemple pour trouver s'il faut on non facturer, il faut faire les -requetes suivantes: -- rechercher tous les Invoiceable et les charger -- rechercher tous les Invoice et facetiser sur invoiceablePart -- Pour chaque condition de chaque Invoiceable s'il n'existe pas de facette - Id:numCondition alors evaluer la condition +Par exemple pour trouver ce qu'il y a a facturer, il faut: +- rechercher tous les Invoiceable n'ayant pas l'extension Invoice - si la condition est vrai alors il y a une facture a emettre du montant - ayant le meme indexe que la condition dans le champs values + evalué par value. -Pour réduire le nombre de Invoiceable sur lequel faire le travail, il est -par exemple possible de restraindre en fonction du type d'objet sur lequel -est le Invoiceable. Par exemple si Invoiceable est sur un Task, il suffit de -recherche en plus seulement les Task qui n'ont pas le status closed. (closed -indiquant qu'il n'y a plus rien a faire sur la tache, meme pas facturer). +Quelques exemples de condition: +- status du target egal a "a facturer" (lot de forfait terminé) +- jour/mois/annee > 01/03/2011 (facture par mois pour de la TMA) +Quelques exemples de value: +- 30% du montant du target +- 2000 euros +- 450 euros par jour de travail trouvé dans time sur le dernier mois +- 25 euros par quart d'heure commencé dans time sur le dernier mois + À une facture et un devis sont liés deux ContactDetails qui représentent les adresses du client et du prestataire. Ainsi, si une personne change d'adresse ou quitte la société par exemple, les adresses d'origine sont sauvegardées afin
participants (1)
-
bpoussin@users.chorem.org