Author: bpoussin Date: 2011-04-06 03:00:47 +0200 (Wed, 06 Apr 2011) New Revision: 57 Url: http://chorem.org/repositories/revision/chorem/57 Log: - add Invoiceable entity - add state on Task Modified: trunk/chorem-entities/src/main/xmi/chorem.properties trunk/chorem-entities/src/main/xmi/chorem.zargo trunk/chorem-entities/src/site/rst/dataModel.rst Modified: trunk/chorem-entities/src/main/xmi/chorem.properties =================================================================== --- trunk/chorem-entities/src/main/xmi/chorem.properties 2011-04-04 16:47:23 UTC (rev 56) +++ trunk/chorem-entities/src/main/xmi/chorem.properties 2011-04-06 01:00:47 UTC (rev 57) @@ -20,3 +20,4 @@ org.chorem.entities.Attachment.class.tagvalue.version=1.0 org.chorem.entities.Quotation.class.tagvalue.version=1.0 org.chorem.entities.Invoice.class.tagvalue.version=1.0 +org.chorem.entities.Invoiceable.class.tagvalue.version=1.0 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-04 16:47:23 UTC (rev 56) +++ trunk/chorem-entities/src/site/rst/dataModel.rst 2011-04-06 01:00:47 UTC (rev 57) @@ -20,8 +20,10 @@ - Task: Description d'une tâche (description, date de fin réelle, prix, nombre de jours estimés). Si une tâche n'est pas liée à un contrat, utiliser un contrat "Hors contrat" qui a un coût de 0 (la tâche a par contre un prix) + une tache a un etat, ex: notstarted, started, delivered, closed - ProjectOrder: Contrat de commande d'un projet (type, description). Plusieurs contrats peuvent être liés à un même projet + un contrat a un etat, ex: send, signed, started, delivered, closed - Company: Description d'une société (nom, type) - Project: Description d'un projet - ContactDetails: Méthode de contact de n'importe quel type (site internet, @@ -57,10 +59,37 @@ ===== - Quotation: devis envoyé à un client en rapport avec un projet -- Invoice: facture envoyée à un client en rapport avec un contrat +- 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. -Un devis accepté engendre un ProjectOrder. Un ProjectOrder engendre des -Invoices. +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. + +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 +- 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 + +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). + À 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 @@ -68,4 +97,5 @@ À la base, un projet (Project) est défini. Un ou plusieurs devis (Quotation) peuvent être réalisés selon les remarques formulées par le client. Ensuite, un contrat (ProjectOrder) est signé et une ou plusieurs factures (Invoice) sont -liées à ce contrat. \ No newline at end of file +liées à ce contrat via un Invoiceable sur le contrat lui meme ou sur ses +Taches.
participants (1)
-
bpoussin@users.chorem.org