'verrouillerEtatsPrecedents' 'Toutes fonctions'
{argDate <Date>}
    
    |
    	numeroSiret<Chaine> nomEtat<Chaine>
    	datePeriode<Date>
    	aVerrouiller<Objet>
    	reponse<Booléen>
    |
    
    dossier		::=	codeDossier
    aVerrouiller	::=	'DAS2T'
    
    reponse	:=	ouiNon{'Certaines DAS2 de l''année précédente ne sont pas verrouillées. 
Si vous souhaitez faire l''import automatique des bénéficiaires vous devez les verrouiller.
Souhaitez-vous les verrouiller maintenant ?'}
    
    SI reponse ALORS
    	POUR TOUT element<EtatDossier> DE nonVerrouilles FAIRE
    		aVerrouiller			:=	element
    		aVerrouiller.EstCalcule[argDate]	!=	VRAI
    		datePeriode			:=	periode.fin
    		periode.fin			:=	argDate
    		numeroSiret			:=	dossier.Siret
    		nomEtat				:=	aVerrouiller.recupererNomDas{}
    
    		SI nomEtat <> ? ALORS
    			numeroSiret	:=	aVerrouiller.chercherEtablissement{}
    		FIN SI
    
    		aVerrouiller.affecterSiret{numeroSiret, dossier.Siret}
    		aVerrouiller.Verrouiller{}[argDate]
    		periode.fin	:=	datePeriode
    	FIN FAIRE
    SINON
    	SORTIR FAUX
    FIN SI
    
    SORTIR VRAI
###
'Indemnités_TOTAL' 'Toutes fonctions'
    
    |
    	totalColonne<Monnaie>
    |
    
    totalColonne	:=	0
    das2T		::=	'DAS2T'
    
    POUR TOUT element<LigneHonoraire> DE das2T.honoraires FAIRE
    	SI element.aIntegrer ALORS
    		totalColonne	+=	element.indemnites
    	FINSI
    FINFAIRE
    
    SORTIR totalColonne
###
'chercherMillesimPrecedent' 'Toutes fonctions'
{argDate <Date>}
    
    -- Utilisée pour faire des recherches à partir de N-1 = 2010.
    
    
    |
    	etatLu<Objet>
    	classeEtat<Chaine> nomEtat<Chaine> anneeEtat<Chaine>
    	nomCherchee<Chaine> classeCherchee<Chaine> designation<Chaine>
    	anneeCherchee<Entier>
    |
    
    dossier			::=	codeDossier
    nonVerrouilles		:=	creerListe{}
    classeCherchee		:=	classe{etat}
    das2T			::=	'DAS2T'
    etatPrecedent		::=	'DAS2T'
    etatLu			::=	'DAS2T'
    nomCherchee		:=	'DAS2T'
    -- Une DAS 2 Millesim N est déclaré sur N-1.
    anneeCherchee		:=	annee{argDate}+1
    
    POUR TOUT element<EtatDossier> DE dossier.etats FAIRE
    	classeEtat	:=	classe{element}
    	nomEtat		:=	chaine{classeEtat, 1, taille{classeEtat}-5}
    	anneeEtat	:=	chaine{classeEtat, taille{classeEtat}-3,taille{classeEtat}}
    
    
    
    	SI nomEtat = nomCherchee ET entier{anneeEtat} = anneeCherchee ALORS
    
    		etatLu		:=	element
    		designation	:=	etatLu.recupererNomDas{}
    
    		SI designation <> ? ALORS
    			SI designation = das2T.nomDas ALORS
    				etatPrecedent	:=	element
    		
    				SI NON etatPrecedent.EstVerrouille[argDate] ALORS	
    					SI NON indiceElement{nonVerrouilles, etatPrecedent} > 0 ALORS
    						ajouterElement{nonVerrouilles, etatPrecedent}
    					FINSI
    				FINSI
    			FINSI
    		SINON
    			SI taille{das2T.nomDas} < 1 ALORS
    				etatPrecedent	:=	element
    		
    				SI NON etatPrecedent.EstVerrouille[argDate] ALORS	
    					SI NON indiceElement{nonVerrouilles, etatPrecedent} > 0 ALORS
    						ajouterElement{nonVerrouilles, etatPrecedent}
    					FINSI
    				FINSI
    			FINSI	
    		FINSI
    	FINSI
    	
    FIN FAIRE
###
'Enregistrer' 'Toutes fonctions'

    -- Menu permettant la sauvegarde des modifications sans quitter l'éditeur.
    
    -- provoque l'enregistrement dans les clusters.
    commit{}
###
'Retenue_TOTAL' 'Toutes fonctions'
    
    |
    	totalColonne<Monnaie>
    |
    
    totalColonne	:=	0
    das2T	::=	'DAS2T'
    
    POUR TOUT element<LigneHonoraire> DE das2T.honoraires FAIRE
    	SI element.aIntegrer ALORS
    		totalColonne	+=	element.retenue
    	FINSI
    FINFAIRE
    
    SORTIR totalColonne
###
'verifierCompte' 'Toutes fonctions'
{argCompte <Chaine> argLigne <Objet>}
    
    |
    	flag<Booléen> ligneFocus<Objet>
    |
    
    das2T		::=	'DAS2T'
    flag		:=	VRAI
    ligneFocus	::=	'LigneHonoraire'
    ligneFocus	:=	argLigne
    
    POUR TOUT element<LigneHonoraire> DE das2T.honoraires FAIRE
    	SI taille{element.compteTiers} > 1 ALORS
    		SI element.compteTiers = argCompte ALORS
    			SI element <> ligneFocus ALORS
    				SI flag ALORS
    					flag	:=	FAUX
    					info{'Le compte Tiers ' + argCompte + ' est déjà déclaré dans la liste des honoraires.'}
    				FINSI
    			FINSI
    		FINSI
    	FINSI
    FINFAIRE
###
'fermer' 'Toutes fonctions'
    
    |
    	dasPere<Objet>
    |
    
    deverserHonoraires{}
    
    dasPere			::=	'DAS2T'
    dasPere			:=	das2T
    dasPere.editeurOuvert	:=	?
###
'Fermer' 'Toutes fonctions'

    --Fermeture de l'éditeur avec sauvegarde des modifications.
    
    fermer{}
    editeur.fermer
###
'Fermer sans sauver' 'Toutes fonctions'

    -- Quitte Coala sans sauver.
    
    -- Variables :
    --	reponse : booléen à VRAI si l'utilisateur, à FAUX
    
    |
    	reponse<Booléen>
    |
    
    -- demande confirmation à l'utilisateur
    reponse	:=	ouiNon{ 'Etes-vous bien sûr de quitter Génération Experts sans sauver les dernières modifications ?'}
    
    -- Sort de Coala si la réponse est positive
    SI reponse ALORS
    	SORTIE{}
    FINSI
###
'Importer_la_comptabilité' 'Toutes fonctions'
    
    |
    	comptesIdentifies<Objet>
    	reponse<Booléen>
		lstDatesDebut<Objet> lstDatesFin<Objet> 
		nbElements<Entier> 
		uneDateDebutExo<Date> uneDateFinExo<Date> exercicePrecedent<Date>
		unCpteur<Entier> uneDateJanvier<Date> uneDateDecembre<Date>
    |
    
    dossier ::= codeDossier
    das2T ::= 'DAS2T'
    compta ::= ''
    exerciceComptable ::= dateCourante
    comptesIdentifies := creerListe{}

    reponse := ouiNon{'Lors de l''import, toutes les informations actuellement saisies sur les bénéficiaires seront perdues.
Continuer l''import ?'}
    
    SI NON reponse ALORS
    	SORTIR FAUX
    SINON
    	das2T.honoraires := creerListe{VRAI}
    FINSI

    -- Automatisme dossier BNC
    SI exerciceComptable.automatismesBNC ET exerciceComptable.autoBNC_DAS2 ALORS
	    dossier.precalcul_CY_BNC := ?
	    dossier.precalcul_CZ_BNC := ?
	    
	    SI mois{exerciceComptable.dateDebut} <> 1 ALORS
	    	exercicePrecedent	:=	exerciceComptable.dateDebut - 1
	    	exerciceComptable	::=	exercicePrecedent
	    
	    	POUR TOUT compte FAIRE
	    		SI (compte.das2 OU (compte.numero #'6226' OU compte.numero #'R')) ET NON compte.estCollectif ET compte.debit > 0 ALORS
					compte.TVA_CZ := ?
					compte.TVA_CY := ?
	    			das2T.importerLaComptabilite{compte, 'ajout',dateCourante}
	    			ajouterElement{comptesIdentifies, compte.numero}
					dossier.precalcul_CY_BNC += compte.TVA_CY
					dossier.precalcul_CZ_BNC += compte.TVA_CZ

					SI shift{} ALORS message{'cumulsCY   ' + compte.TVA_CY + '   ' + dossier.precalcul_CY_BNC} FINSI
					SI shift{} ALORS message{'cumulsCZ   ' + compte.TVA_CZ + '    ' + dossier.precalcul_CZ_BNC} FINSI
	    		FINSI
	    	FINFAIRE
	    FINSI

	    exerciceComptable	::=	dateCourante

	    POUR TOUT compte FAIRE
	    	SI (compte.das2 OU (compte.numero #'6226' OU compte.numero #'R')) ET NON compte.estCollectif ET compte.debit > 0 ALORS
				compte.TVA_CZ := ?
				compte.TVA_CY := ?
	    		SI indiceElement{comptesIdentifies, compte.numero} > 0 ALORS
	    			das2T.importerLaComptabilite{compte, 'complement',dateCourante}
	    		SINON
	    			das2T.importerLaComptabilite{compte, 'ajout',dateCourante}
	    			ajouterElement{comptesIdentifies, compte.numero}
	    		FINSI
				dossier.precalcul_CY_BNC += compte.TVA_CY
				dossier.precalcul_CZ_BNC += compte.TVA_CZ

				SI shift{} ALORS message{'cumulsCY   ' + compte.TVA_CY + '   ' + dossier.precalcul_CY_BNC} FINSI
				SI shift{} ALORS message{'cumulsCZ   ' + compte.TVA_CZ + '    ' + dossier.precalcul_CZ_BNC} FINSI
			FIN SI
		FIN FAIRE
		SI dossier.precalcul_CY_BNC > 0 ALORS
			message{'Montant TVA sur achats calculé qui sera importé sur la case CY de la 2035B : ' + dossier.precalcul_CY_BNC}
	    FINSI
	    SI dossier.precalcul_CZ_BNC > 0 ALORS
			message{'Montant TVA sur honoraires rétrocédés qui sera importé sur la case CZ de la 2035B : ' + dossier.precalcul_CZ_BNC}
	    FINSI
	SINON
	    uneDateJanvier := date{1, 1, annee{dateCourante}}
	    uneDateDecembre := date{31, 12, annee{dateCourante}}

		lstDatesDebut := compta.datesDebut
		lstDatesFin := compta.datesFin
	    unCpteur := 1
		nbElements := nbElements{lstDatesDebut}
	    TANT QUE unCpteur <= nbElements{lstDatesDebut} FAIRE
	    	uneDateDebutExo := elementEntierDIndice{lstDatesDebut, unCpteur}
	    	uneDateFinExo := elementEntierDIndice{lstDatesFin, unCpteur}
	    
	    	-- Si l'exercice est présent sur l'année civile recherchée
	    	SI (uneDateDebutExo >= uneDateJanvier ET uneDateDebutExo <= uneDateDecembre) OU 
	    			(uneDateFinExo >= uneDateJanvier ET uneDateFinExo <= uneDateDecembre) ALORS 

	    		exerciceComptable ::= uneDateFinExo
			    POUR TOUT compte FAIRE
			    	SI compte.das2 ALORS
			    		SI indiceElement{comptesIdentifies, compte.numero} > 0 ALORS
			    			das2T.importerLaComptabilite{compte, 'complement', dateCourante} 
			    		SINON
			    			das2T.importerLaComptabilite{compte, 'ajout', dateCourante} 
			    			ajouterElement{comptesIdentifies, compte.numero}
			    		FINSI
			    	FINSI
			    FINFAIRE
	    	FINSI
	    
	    	unCpteur += 1
	    FIN FAIRE
	FIN SI

    exerciceComptable ::= dateCourante
        
    editeur.majLignes

    SORTIR VRAI
###
'Prévisualiser_un_feuillet' 'Toutes fonctions'

    -- Sélectionner une page de la DAS2 T pour la visualiser.
    
    |
    	honoraireSelectionne<Objet>
    	reponse<Booléen>
    |
    
    honoraireSelectionne	::=	'LigneHonoraire'
    das2T			::=	'DAS2T'
    
    SI nbElements{editeur.lignesSelectionnees} > 0 ALORS
    	honoraireSelectionne	:=	elementDIndice{editeur.lignesSelectionnees, 1}
    	pageSelectionnee	:=	'' + honoraireSelectionne.feuillet
    SINON
    	pageSelectionnee	:=	'1'
    FINSI
    
    reponse	:=	dialogue{'previsualisation','Choix du feuillet'}
    
    SI reponse ALORS
    	SI taille{pageSelectionnee} > 0 ALORS
    		das2T.previsualiser{entier{pageSelectionnee}}
    	FINSI
    FINSI
###
'ACTIVATION' 'Toutes fonctions'
    initialiserComptesDas2{}
###
'initialiserComptesDas2' 'Toutes fonctions'
    
    |
    	sur2Exo<Booléen>
    	exercicePrecedent<Date>
    |
    
    dossier			::=	codeDossier
    compta			::=	''
    exerciceComptable	::=	dateCourante
    comptesDas2		:=	creerListe{}
    sur2Exo			:=	VRAI
    
    SI mois{exerciceComptable.dateDebut} <> 1 ALORS
    	exercicePrecedent	:=	exerciceComptable.dateDebut - 1
    SINON
    	sur2Exo			:=	FAUX
    FINSI
    
    SI sur2Exo ALORS
    	exerciceComptable	::=	exercicePrecedent
    
    	POUR TOUT compte FAIRE
    		SI compte.das2 ALORS
    			ajouterElement{comptesDas2, compte.numero}
    		FINSI
    	FINFAIRE
    
    FINSI
    
    exerciceComptable	::=	dateCourante
    
    POUR TOUT compte FAIRE
    	SI compte.das2 ALORS
    		SI indiceElement{comptesDas2, compte.numero} < 1 ALORS
    			ajouterElement{comptesDas2, compte.numero}
    		FINSI
    	FINSI
    FINFAIRE
###
'deverserHonoraires' 'Toutes fonctions'
    
    |
    	exercicePrecedent<Date>
    	resquilleur<Entier> i<Entier>
    	sur2Exo<Booléen> pasDas2<Booléen>
    	compteTiers<Objet> honoraire<Objet>
    |
    
    i			:=	1
    dossier			::=	codeDossier
    compta			::=	''
    exerciceComptable	::=	dateCourante
    das2T			::=	'DAS2T'
    compteTiers		::=	'Compte_40'
    honoraire		::=	'LigneHonoraire'
    resquilleur		:=	0
    sur2Exo			:=	VRAI
    pasDas2			:=	FAUX
    
    SI mois{exerciceComptable.dateDebut} <> 1 ALORS
    	exercicePrecedent	:=	exerciceComptable.dateDebut - 1
    SINON
    	sur2Exo			:=	FAUX
    FINSI
    
    TANT QUE i <= nbElements{das2T.honoraires} FAIRE
    
    	honoraire		:=	elementDIndice{das2T.honoraires, i}
    	exerciceComptable	::=	dateCourante
    
    	SI taille{honoraire.compteTiers} > 0 ALORS
    		compte[dateCourante]	::=	honoraire.compteTiers
    
    		SI compte <> ? ALORS
    			compteTiers	:=	compte[dateCourante]
				
				SI (exerciceComptable.automatismesBNC ET exerciceComptable.autoBNC_DAS2) ALORS
					SI NON (compteTiers.das2 OU compteTiers.numero #'6226' OU compteTiers.numero #'R') ALORS
						pasDas2	:=	VRAI
					FINSI
				SINON
					SI NON compteTiers.das2 ALORS
						pasDas2	:=	VRAI
					FINSI
    			FINSI
    				
    		FINSI
    
    		SI sur2Exo ALORS
    			SI pasDas2 ALORS
    				exerciceComptable	::=	exercicePrecedent
    				compte			::=	?
    
    				POUR TOUT compte FAIRE
    					SI compte.numero = honoraire.compteTiers ALORS
    						compteTiers	:=	compte
    						SI compteTiers <> ? ALORS
    							SI compteTiers.das2 ALORS
    								pasDas2	:=	FAUX
    							FINSI
    						FINSI
    					FINSI
    				FINFAIRE
    			FINSI
    		FINSI
    			
    		SI pasDas2 ALORS
    			info{'le compte ' + honoraire.compteTiers + ' n''est pas un compte tiers DAS 2T.'}
    		SINON
    			SI honoraire.id = 'NP' ALORS
    				compteTiers.nom		:=	honoraire.nom
    				compteTiers.prenom		:=	honoraire.prenom
    				compteTiers.raisonSociale	:=	?
    			SINON
    				compteTiers.raisonSociale	:=	honoraire.nom
    				compteTiers.nom		:=	?
    				compteTiers.prenom		:=	?
    			FINSI
    				
    			compteTiers.adrsLig1	:=	?
    
    			SI honoraire.numeroAdresse = ? ALORS
    					SI taille{honoraire.voie} > 0 ET honoraire.voie <> '?' ALORS
    						compteTiers.adrsLig1	:=	honoraire.voie
    					FINSI
    			SINON
    				compteTiers.adrsLig1	:=	honoraire.numeroAdresse
    
    					SI taille{honoraire.voie} > 0 ET honoraire.voie <> '?' ALORS
    						compteTiers.adrsLig1	+=	' ' + honoraire.voie
    					FINSI
    			FINSI

    			compteTiers.adrsLig2	:=	?
    			compteTiers.adrsLig3	:=	honoraire.complementAdresse
    			compteTiers.codePostal	:=	honoraire.codePostal
    			compteTiers.ville		:=	honoraire.ville
    			compteTiers.bureau	:=	honoraire.bureau
    			compteTiers.profession	:=	honoraire.profession
    			compteTiers.siret	:=	honoraire.numeroSiret
    			compteTiers.codeInsee := honoraire.codeInsee
    			compteTiers.pays := honoraire.nomPays
    			honoraire.enConformite	:=	VRAI
    		FINSI
    	SINON
    		resquilleur	+=	1
    	FINSI		
    	
    	i	+=	1
    FINFAIRE
    
    SI resquilleur > 1 ALORS
    	info{'Attention : certains bénéficiaires de votre déclaration ne correspondent à aucun compte de tiers de votre comptabilité.'}
    FINSI
###
'Ouvrir_la_comptabilité' 'Toutes fonctions'
    ouvrirCompta { codeDossier }
###
'Lister_lignes_comptables_déclarées' 'Toutes fonctions'
    
    das2T	::=	'DAS2T'
    
    das2T.listerHonoraires{dateCourante}
###
'ouvrir' 'Toutes fonctions'
{argEtat <Objet> argDate <Date>}
    
    -- ouverture de l'éditeur.
    
    
    |
    	editeurHonoraire<Objet>
    |
    
    editeurHonoraire	::=	'Editeur'
    dateCourante	:=	argDate
    das2T		::=	'DAS2T'
    das2T		:=	argEtat
    
    editeurHonoraire			:=	creer{'Editeur'}
    editeurHonoraire.racine		:=	etat
    editeurHonoraire.avecDates	:=	FAUX
    editeurHonoraire.avecObjets	:=	FAUX
    editeurHonoraire.avecAttributs	:=	FAUX	
    editeurHonoraire.avecLignes	:=	VRAI
    editeurHonoraire.attributs2EnHaut	:=	FAUX
    editeurHonoraire.attributs2EnBas	:=	FAUX
    editeurHonoraire.y1		:= 	50
    editeurHonoraire.avecOnglets2	:=	FAUX
    editeurHonoraire.avecAttributs2	:=	FAUX
    editeurHonoraire.avecBarreOutil	:=	FAUX
    
    editeurHonoraire.titre	:=	'Import des honoraires de DAS 2'
    
    editeurHonoraire.menu	:=
    'Fichier
	Enregistrer
	--
	Prévisualiser_un_feuillet
	Lister_lignes_comptables_déclarées
	--
	Fermer
	Fermer sans sauver 
Traitement
	Importer_la_comptabilité'
    
    SI das2T.millesime<2011 ALORS
    	editeurHonoraire.menu+='
	Importer_éléments_DAS2_N-1'
    SINON
    	editeurHonoraire.menu+='
	Importer_bénéficiaires_DAS2_N-1'	
    FINSI
    editeurHonoraire.menu+='
	--
	Ouvrir_la_comptabilité'
    
    SI enDev{'AK'} ALORS
    editeurHonoraire.menu +=
    '
Developpement
	afficherOnglets
	comptes
	Impression_des_honoraires'
    
    FINSI
    
    editeurHonoraire.menu +=
    '
Aide
	Aide
	Messages'
    
    initialiserComptesDas2{}
    editeurHonoraire.ouvrir
    -- A laisser, contournement d'un bug pour un éditeur qui n'affiche pas d'objets.
    editeur.majObjets
    SORTIR VRAI
###
'lireCompteTiers' 'Toutes fonctions'
{argHonoraire <Objet> argCompte <Chaine>}
    
    |
    	solde<Monnaie>
    	sur2Exo<Booléen>
    	exercicePrecedent<Date>
    	compteTiers<Objet> honoraire<Objet>
    |
    
    dossier			::=	codeDossier
    compta			::=	''
    exerciceComptable	::=	dateCourante
    das2T			::=	'DAS2T'
    compteTiers		::=	'Compte_40'
    honoraire		::=	'LigneHonoraire'
    honoraire		:=	argHonoraire
    sur2Exo			:=	VRAI
    
    SI mois{exerciceComptable.dateDebut} <> 1 ALORS
    	exercicePrecedent	:=	exerciceComptable.dateDebut - 1
    SINON
    	sur2Exo			:=	FAUX
    FINSI
    
    POUR TOUT compte FAIRE
    	SI compte.numero = argCompte ALORS
    		compteTiers	:=	compte
    		honoraire.soldeCompte	:=	compteTiers.soldeDAS2{dateCourante}
    		das2T.lireCompteTiers{argHonoraire, compteTiers, dateCourante}
    	FINSI
    FINFAIRE
    
    SI sur2Exo ALORS
    	exerciceComptable	::=	exercicePrecedent
    
    	POUR TOUT compte FAIRE
    		SI compte.numero = argCompte ALORS
    			compteTiers		:=	compte
    			solde			:=	compteTiers.soldeDAS2{dateCourante}
    			honoraire.soldeCompte	+=	solde
    		FINSI
    	FINFAIRE
    FINSI
###
'honoraires_SUPPRESSIONS' 'Toutes fonctions'
    
    |
    	reponse<Booléen>
    |
    
    reponse	:=	ouiNon{'Supprimer les lignes sélectionnées ?'}
    
    SI reponse ALORS
    
    	POUR TOUT element<LigneHonoraire> DE editeur.lignesSelectionnees FAIRE
    		element.auRevoir	:=	VRAI
    	FINFAIRE
    
    	editeur.majLignes
    	SORTIR VRAI
    FINSI
    
    SORTIR FAUX
###
'honoraires_POSTAJOUT' 'Toutes fonctions'
    
    |
    	l <Objet>
    	ligneFocus<Objet>
    |
    
    l	:=	editeur.lignesSelectionnees
    ligneFocus	::=	'LigneHonoraire'
    ligneFocus	:=	elementDIndice{editeur.lignesSelectionnees, 1}
    ligneFocus.aIntegrer	:=	VRAI
    
    editeur.majLignes
    editeur.lignesSelectionnees	:=	l
    
    SORTIR VRAI
###
'honoraires_LISTE' 'Toutes fonctions'

    |
    	numero<Entier> decompte<Entier> reste<Entier>
    |
    
    decompte	:=	1
    numero		:=	1
    das2T		::=	'DAS2T'
    
    -- boucle sur les honoraires pour afficher les numéro de feuillet.
    POUR TOUT element<LigneHonoraire> DE das2T.honoraires FAIRE
    
    	SI NON element.auRevoir ALORS
    
    		element.calculerTotal{}
    		element.gererCouleur{}	
    
    		SI element.aIntegrer ALORS
    			-- feuillet 1 : 3 honoraires.
    			SI decompte = 4 ET numero = 1 ALORS
    				numero		+=	1
    				decompte	:=	1
    			FINSI
    
    			SI decompte = 7 ALORS
    				numero		+=	1
    				decompte	:=	1
    			FINSI
    			
    			element.feuillet	:=	numero
    			reste		:=	modulo{numero,2}	
    			decompte	+=	1
    		SINON
    			element.feuillet	:=	0			
    		FINSI
    
    	FINSI
    FINFAIRE
    
    SORTIR das2T.honoraires
###
'FERMETURE' 'Toutes fonctions'
    fermer{}
###
'Messages' 'Toutes fonctions'

    -- Ouverture de la fenetre de messages.
    
    message{''}
###
'Aide' 'Toutes fonctions'

    -- Ouverture de l'aide en ligne.
    
    -- Mettre l'aide de la das2.
    ouvrirAide{'comptabilite\aid.chm::/saisiJournal.htm#saisiJournal'}
###
'P._TOTAL' 'Toutes fonctions'
    
    |
    	i<Entier>
    	honoraire<Objet>
    |
    
    das2T		::=	'DAS2T'
    i		:=	nbElements{das2T.honoraires}
    honoraire	::=	'LigneHonoraire'
    honoraire	:=	elementDIndice{das2T.honoraires, i}
    
    SORTIR honoraire.feuillet
###
'Avantages_TOTAL' 'Toutes fonctions'
    
    |
    	totalColonne<Monnaie>
    |
    
    totalColonne	:=	0
    das2T	::=	'DAS2T'
    
    POUR TOUT element<LigneHonoraire> DE das2T.honoraires FAIRE
    	SI element.aIntegrer ALORS
    		totalColonne	+=	element.avantages
    	FINSI
    FINFAIRE
    
    SORTIR totalColonne
###
'recupDonneesBeneficiaire' 'Toutes fonctions'
{maLigneHonoraireSelect<Objet>}

	|
		uneLigneHonoraireSelect<Objet>uneLigneHonoraire<Objet>uneLigneHonoraireOrig<Objet>
		unSeparateur<Chaine>lstNoms<Objet>monChoixBeneficiaire<Chaine>rs<Objet>
		objGI2<Objet>unNumeroLigneBenef<Entier>unCpteur<Entier>remplacerOK<Booléen>
	|

    objGI2 ::= 'GI2'
    objGI2 := creer{'GI2'}
    das2T ::= 'DAS2T'
    uneLigneHonoraireOrig ::= 'LigneHonoraire'
	uneLigneHonoraire ::= 'LigneHonoraire'
    uneLigneHonoraireSelect ::= 'LigneHonoraire'
    uneLigneHonoraireSelect := maLigneHonoraireSelect

    unCpteur := 0
    unSeparateur := ' - '
    lstNoms := creerListe{}

    POUR TOUT element<LigneHonoraire> DE das2T.honoraires FAIRE
    	uneLigneHonoraire := element
    	unCpteur += 1

    	SI uneLigneHonoraire <> uneLigneHonoraireSelect ALORS
    		SI taille{uneLigneHonoraire.nom} > 0 ALORS
		    	ajouterElement{lstNoms, '' + unCpteur + unSeparateur + uneLigneHonoraire.nom}
	   		FINSI
    	FINSI
    FIN FAIRE

    SI nbElements{lstNoms} = 0 ALORS
    	info{'Il n''est pas possible de sélectionner un autre bénéficiaire.'}
    SINON
	    monChoixBeneficiaire := choix{lstNoms} 
	    SI taille{monChoixBeneficiaire} > 0 ALORS 

	    	-- Extraire le numero de la ligne
			rs := flotLecture{monChoixBeneficiaire}
			unNumeroLigneBenef := entier{objGI2.sansEspaceDebutFin{lire{rs, unSeparateur}}}

			uneLigneHonoraireOrig := elementDIndice{das2T.honoraires, unNumeroLigneBenef}

	    	remplacerOK := VRAI
			SI taille{uneLigneHonoraireSelect.nom} > 0 ALORS
				SI NON ouiNon{'Confirmez-vous le remplacement des données du bénéficiaire par celles de "' + uneLigneHonoraireOrig.nom + '" ?'} ALORS
					remplacerOK := FAUX
				FINSI
			FINSI

			SI remplacerOK ALORS
				uneLigneHonoraireSelect.nom := uneLigneHonoraireOrig.nom
				uneLigneHonoraireSelect.id := uneLigneHonoraireOrig.id
				uneLigneHonoraireSelect.compteTiers := uneLigneHonoraireOrig.compteTiers
				uneLigneHonoraireSelect.soldeCompte := uneLigneHonoraireOrig.soldeCompte
				uneLigneHonoraireSelect.numeroSiret := uneLigneHonoraireOrig.numeroSiret
				uneLigneHonoraireSelect.profession := uneLigneHonoraireOrig.profession
				uneLigneHonoraireSelect.prenom := uneLigneHonoraireOrig.prenom
				uneLigneHonoraireSelect.numeroAdresse := uneLigneHonoraireOrig.numeroAdresse
				uneLigneHonoraireSelect.btq := uneLigneHonoraireOrig.btq
				uneLigneHonoraireSelect.voie := uneLigneHonoraireOrig.voie
				uneLigneHonoraireSelect.codePostal := uneLigneHonoraireOrig.codePostal
				uneLigneHonoraireSelect.ville := uneLigneHonoraireOrig.ville
				uneLigneHonoraireSelect.codeInsee := uneLigneHonoraireOrig.codeInsee
				uneLigneHonoraireSelect.bureau := uneLigneHonoraireOrig.bureau
				uneLigneHonoraireSelect.nomPays := uneLigneHonoraireOrig.nomPays
				uneLigneHonoraireSelect.complementAdresse := uneLigneHonoraireOrig.complementAdresse

				objGI2.reafficherAttributs{}
				objGI2.reafficherLigneCourante{}
			FINSI
	    FIN SI
    FIN SI    

###
'honoraires_CLICKDROIT' 'Toutes fonctions'

    -- menu qui apparait sur un click droit sur une ligne comptable.
    
    |
    	reponse<Chaine> menu<Chaine>termePrevisualiserFeuillet<Chaine>termRecupDonneesBenef<Chaine>
    	avecFocus<Objet>unCR<Chaine>
    |
    
    das2T		::=	'DAS2T'
    avecFocus	::=	'LigneHonoraire'
    avecFocus	:=	elementDIndice{editeur.lignesSelectionnees, 1}

unCR := '
'

    termePrevisualiserFeuillet := 'Prévisualiser le feuillet '
    termRecupDonneesBenef := 'Récupérer les données d''un bénéficiaire'

    SI avecFocus.feuillet > 0 ALORS
    	menu := termePrevisualiserFeuillet + avecFocus.feuillet + unCR + termRecupDonneesBenef
    SINON
    	menu := 'Pas de feuillet à visualiser'
    FINSI
    
    reponse	:=	choix{menu}
    
    SI reponse # termePrevisualiserFeuillet ALORS
    	das2T.previsualiser{avecFocus.feuillet}
    FINSI
    SI reponse = termRecupDonneesBenef ALORS
		recupDonneesBeneficiaire{avecFocus}
    FINSI

###
'Montant 4_TOTAL' 'Toutes fonctions'
    
    |
    	totalColonne<Monnaie>
    |
    
    totalColonne	:=	0
    das2T	::=	'DAS2T'
    
    POUR TOUT element<LigneHonoraire> DE das2T.honoraires FAIRE
    	SI element.aIntegrer ALORS
    		totalColonne	+=	element.montant04
    	FINSI
    FINFAIRE
    
    SORTIR totalColonne
###
'Montant 3_TOTAL' 'Toutes fonctions'
    
    |
    	totalColonne<Monnaie>
    |
    
    totalColonne	:=	0
    das2T	::=	'DAS2T'
    
    POUR TOUT element<LigneHonoraire> DE das2T.honoraires FAIRE
    	SI element.aIntegrer ALORS
    		totalColonne	+=	element.montant03
    	FINSI
    FINFAIRE
    
    SORTIR totalColonne
###
'Montant 2_TOTAL' 'Toutes fonctions'
    
    |
    	totalColonne<Monnaie>
    |
    
    totalColonne	:=	0
    das2T	::=	'DAS2T'
    
    POUR TOUT element<LigneHonoraire> DE das2T.honoraires FAIRE
    	SI element.aIntegrer ALORS
    		totalColonne	+=	element.montant02
    	FINSI
    FINFAIRE
    
    SORTIR totalColonne
###
'Montant 1_TOTAL' 'Toutes fonctions'
    
    |
    	totalColonne<Monnaie>
    |
    
    totalColonne	:=	0
    das2T	::=	'DAS2T'
    
    POUR TOUT element<LigneHonoraire> DE das2T.honoraires FAIRE
    	SI element.aIntegrer ALORS
    		totalColonne	+=	element.montant01
    	FINSI
    FINFAIRE
    
    SORTIR totalColonne
###
'TVA Nette_TOTAL' 'Toutes fonctions'
    
    |
    	totalColonne<Monnaie>
    |
    
    totalColonne	:=	0
    das2T	::=	'DAS2T'
    
    POUR TOUT element<LigneHonoraire> DE das2T.honoraires FAIRE
    	SI element.aIntegrer ALORS
    		totalColonne	+=	element.tvaNette
    	FINSI
    FINFAIRE
    
    SORTIR totalColonne
###
'Nom/Raison Sociale_TOTAL' 'Toutes fonctions'
    SORTIR 'TOTAL A DECLARER : '
###
'_VARIABLE' 'Toutes fonctions'
    
    |
    	rc<Chaine>
    	colonnes<Objet> var<Objet>
    |
    
    colonnes	:=	flotEcriture{}
    rc		:=	'
'
    
    var 		:=	creerVariable{'VariableListe'}
    var 		::=	'VariableListe'
    var.nom		:=	'honoraires'
    var.nomClasse	:=	'LigneHonoraire'
    
    var.extensible		:=	VRAI
    var.deplaceable		:=	FAUX
    var.avecTotaux		:=	VRAI
    var.avecComplement	:=	FAUX
    var.avecFiltres		:=	FAUX
    
    colonnes	+=	'aIntegrer;int;22;1' + rc
    colonnes	+=	'montantTotal;Total;75;0' + rc
    colonnes	+=	'id;Id;36;1' + rc
    colonnes	+=	'nom;Nom/Raison Sociale;140;1' + rc
    colonnes	+=	'nat01;Nat1;40;1' + rc
    colonnes	+=	'montant01;Montant 1;75;1' + rc
    colonnes	+=	'nat02;Nat2;40;1' + rc
    colonnes	+=	'montant02;Montant 2;75;1' + rc
    colonnes	+=	'nat03;Nat3;40;1' + rc
    colonnes	+=	'montant03;Montant 3;75;1' + rc
    colonnes	+=	'nat04;Nat4;40;1' + rc
    colonnes	+=	'montant04;Montant 4;75;1' + rc
    colonnes	+=	'caseN;N;40;1' + rc
    colonnes	+=	'avantages;Avantages;75;1' + rc
    colonnes	+=	'caseM;M;40;1' + rc
    colonnes	+=	'indemnites;Indemnités;75;1' + rc
    colonnes	+=	'tvaNette;TVA Nette;75;1' + rc
    colonnes	+=	'caseO;O;40;1' + rc
    colonnes	+=	'retenue;Retenue;75;1' + rc
    colonnes	+=	'feuillet;P.;30;0' + rc
    
    
    var.description	:=	contenuFlot{colonnes}
    
    SORTIR var
###
'pageSelectionnee_LISTE' 'Toutes fonctions'
    
    |
    	toutesPages<Chaine> rc<Chaine>
    	i<Entier> max<Entier>
    |
    
    i		:=	1
    max		:=	0
    das2T		::=	'DAS2T'
    rc		:=	'
'
    
    -- boucle sur les honoraires pour afficher les numéro de feuillet.
    POUR TOUT element<LigneHonoraire> DE das2T.honoraires FAIRE
    	SI NON element.auRevoir ALORS
    		SI element.aIntegrer ALORS
    			max	:=	element.feuillet
    		FINSI
    	FINSI
    FINFAIRE
    
    SI max > 0 ALORS
    	TANT QUE i <= max FAIRE
    		toutesPages	+=	'' + i + rc
    		i		+=	1
    	FINFAIRE
    FINSI
    
    SORTIR toutesPages
###
'prevenirClient' 'Toutes fonctions'
{argMessage <Chaine>}
    
    |
    	reponse<Booléen>
    |
    
    reponse	:=	FAUX
    
    SI argMessage = 'ecraser' ALORS
    	reponse		:=	ouiNon{'Lors de l''import, toutes les informations actuellement saisies sur les bénéficiaires seront perdues.
Continuer l''import ?'}
    FINSI
    
    SORTIR reponse
###
'Importer_bénéficiaires_DAS2_N-1' 'Toutes fonctions'
    
    |
    	reponse<Booléen>
    	datePrecedente<Date>
    	i<Entier>  resquilleur<Entier>
    	proposition<Objet> nouvelleLigne<Objet>
    	tmpDAS<Objet> tmpAnnee<Chaine> tmpMontant<Entier>
    |

    tmpDAS	::=	'EditeurHonoraires'
    tmpDAS	:=	editeur.racine
    tmpAnnee	:=	chaine{classe{tmpDAS.das2T}, 7, 10}
	SI entier{tmpAnnee} > 2024 ALORS
		tmpMontant	:=	2400
	SINON
		SI entier{tmpAnnee} > 2015 ALORS
			tmpMontant	:=	1200
		SINON
			tmpMontant	:=	600
		FINSI
	FIN SI
    
    das2T		::=	'DAS2T'
    etatPrecedent	::=	'DAS2T'
    datePrecedente	:=	date{31, 12, (annee{dateCourante} -1)}
    i		:=	1
    propositions	:=	creerListe{}
    proposition	::=	'LigneHonoraire'
    nouvelleLigne	::=	'LigneHonoraire'
    
    
    reponse	:=	ouiNon{'Cet import est préconisé dans le cas où l''application Production Comptable n''est pas présente dans le dossier.
Si vous utilisez cet import, les données présentes dans l''éditeur annuleront et remplaceront les données saisies dans l''onglet informations sur le tiers du plan comptable.
Souhaitez-vous continuer ? '}
    
    SI NON reponse ALORS
    	SORTIR FAUX
    FINSI
    
    reponse		:=	prevenirClient{'ecraser'}
    
    SI NON reponse ALORS
    	SORTIR FAUX
    FINSI
    
    chercherMillesimPrecedent{datePrecedente}
    
    SI nbElements{nonVerrouilles} > 0 ALORS
    	SI NON verrouillerEtatsPrecedents{datePrecedente} ALORS
    		SORTIR FAUX
    	FINSI
    FINSI
    
    SI etatPrecedent =  ? ALORS
    	info{'Aucune déclaration DAS2 T n''a été faite sur l''année précédente, pour cet établisement.'}
    	SORTIR FAUX
    FINSI
    
    SI nbElements{etatPrecedent.honoraires} < 1 ALORS
    	info{'Il n''existe pas de bénéficiaires saisis dans la DAS2 T, sur l''exercice précédent.'}
    	SORTIR FAUX
    FINSI
    
    -- boucle sur les honoraires pour afficher les numéro de feuillet.
    POUR TOUT element<LigneHonoraire> DE etatPrecedent.honoraires FAIRE
    	proposition	:=	element
    	proposition.calculerHonoraires{i}
    	ajouterElement{propositions, element}
    	i	+=	1
    FINFAIRE
    
    reponse	:=	dialogue{200, 600, 'propositions', 'Choix des bénéficiaires à importer de la DAS 2 N-1. (en orange, les honoraires <= ' + tmpMontant + ' €)'}
    
    SI reponse ALORS
    	viderListe{das2T.honoraires}
    
    	SI nbElements{propositions} > 0 ALORS
    		POUR TOUT element<LigneHonoraire> DE propositions FAIRE
    			SI element.estAReprendre ALORS
    
    				SI element.compteTiers = ? ALORS
    					resquilleur	+=	1
    				FINSI
    
    				nouvelleLigne	:=	creer{'LigneHonoraire'}
    				nouvelleLigne.clonerHonoraire{element}
    				ajouterElement{das2T.honoraires, nouvelleLigne}
    
    				SI NON element.montantAReprendre ALORS
    					nouvelleLigne.mettreAZero{}
    				FINSI 
    			FINSI
    		FINFAIRE
    	FINSI			
    FIN SI
    
    SI resquilleur > 0 ALORS
    	info{'Attention : Certains bénéficiaires de votre déclaration ne correspondent à aucun compte tiers de votre comptabilité.'}
    FINSI
    
    propositions	:=	?
    
    editeur.majLignes
    
    SORTIR VRAI
###
'chercherEtatsPrecedents' 'N-1'
{argDate <Date>}
    
    -- Avant 2010.
    
    |
    	classeEtat<Chaine> nomEtat<Chaine> anneeEtat<Chaine>
    	nomCherchee<Chaine> classeCherchee<Chaine> designation<Chaine>
    	anneeCherchee<Entier> 
    |
    
    dossier			::=	codeDossier
    nonVerrouilles		:=	creerListe{}
    classeCherchee		:=	classe{etat}
    das2T			::=	'DAS2T'
    etatPrecedent		::=	'DAS2T'
    nomCherchee		:=	'DAS2T'
    anneeCherchee		:=	annee{argDate} + 1
    
    POUR TOUT element<EtatDossier> DE dossier.etats FAIRE
    	classeEtat	:=	classe{element}
    	nomEtat		:=	chaine{classeEtat, 1, taille{classeEtat}-5}
    	anneeEtat	:=	chaine{classeEtat, taille{classeEtat}-3,taille{classeEtat}}
    
    	SI nomEtat = nomCherchee ET entier{anneeEtat} = anneeCherchee ALORS
    		etatPrecedent	:=	element
    		
    		SI anneeEtat = '2009' ALORS
    			lire2009{etatPrecedent}
    		FINSI
    
    		SI NON etatPrecedent.EstVerrouille[argDate] ALORS
    			SI indiceElement{nonVerrouilles, etatPrecedent} > 1 ALORS
    				designation	:=	etatPrecedent.recupererNomDas{}
    			
    				SI designation <> ? ALORS
    					SI designation = das2T.nomDas ALORS
    						ajouterElement{nonVerrouilles, etatPrecedent}
    					FINSI
    				SINON
    					SI das2T.nomDas = ? ALORS
    						ajouterElement{nonVerrouilles, etatPrecedent}
    					FINSI
    				FINSI
    			FINSI
    		FINSI
    	FINSI
    	
    FIN FAIRE
###
'lire2009' 'N-1'
{argDas2 <Objet>}
    
    |
    	das2009<Objet>
    |
    
    das2009		::=	'DAS2T_2009'
    das2009		:=	argDas2
    honoraires2009		:=	creerListe{}
    
    importer2009{das2009}
    
    SI nbElements{das2009.listExten} > 0 ALORS
    	POUR TOUT element<DAS2T_2009> DE das2009.listExten FAIRE
    		importer2009{element}
    	FINFAIRE
    FINSI
###
'Importer_éléments_DAS2_N-1' 'N-1'
    
    |
    	i<Entier> resquilleur<Entier>
    	reponse<Booléen>
    	datePrecedente<Date>
    	proposition<Objet>
    	tmpDAS<Objet> tmpAnnee<Chaine> tmpMontant<Entier>
    |

    tmpDAS	::=	'EditeurHonoraires'
    tmpDAS	:=	editeur.racine
    tmpAnnee	:=	chaine{classe{tmpDAS.das2T}, 7, 10}
	SI entier{tmpAnnee} > 2024 ALORS
		tmpMontant	:=	2400
	SINON
		SI entier{tmpAnnee} > 2015 ALORS
			tmpMontant	:=	1200
		SINON
			tmpMontant	:=	600
		FINSI
	FIN SI
    
    das2T		::=	'DAS2T'
    etatPrecedent	::=	'DAS2T'
    proposition	::=	'LigneHonoraire'
    datePrecedente	:=	date{31, 12, (annee{dateCourante} -1)}
    i		:=	1
    resquilleur	:=	0
    
    reponse	:=	prevenirClient{'ecraser'}
    
    SI NON reponse ALORS
    	SORTIR FAUX
    FINSI
    
    chercherEtatsPrecedents{datePrecedente}
    
    SI nbElements{nonVerrouilles} > 0 ALORS
    	SI NON verrouillerEtatsPrecedents{datePrecedente} ALORS
    		SORTIR FAUX
    	FINSI
    FINSI
    
    SI etatPrecedent =  ? ALORS
    	info{'Aucune déclaration DAS2 T n''a été faite sur l''année précédente, pour cet établisement.'}
    	SORTIR FAUX
    FINSI
    
    propositions	:=	honoraires2009
    
    SI nbElements{propositions} < 1 ALORS
    	info{'Il n''existe pas de bénéficiaires saisis dans la DAS2 T, sur l''exercice précédent.'}
    	SORTIR FAUX
    FINSI
    
    info{'En vertu du BOI 13 K 9 07, les revenus 2009 déclarés en 2010, seules les sommes versées supérieures à ' + tmpMontant + ' euros par an 
et pour un même bénéficiaire doivent être portées sur la déclaration.'}
    
    POUR TOUT element<LigneHonoraire> DE propositions FAIRE
    	proposition	:=	element
    	proposition.calculerHonoraires{i}
    
    	i	+=	1
    FINFAIRE
    
    reponse	:=	dialogue{200, 500, 'propositions', 'Choix des bénéficiaires à importer de la DAS 2 N-1. (en orange, les honoraires <= ' + tmpMontant + ' €)'}
    
    
    SI reponse ALORS
    	viderListe{das2T.honoraires}
    
    	SI nbElements{propositions} > 0 ALORS
    		POUR TOUT element<LigneHonoraire> DE propositions FAIRE
    			SI element.estAReprendre ALORS
    				element.COULEUR	:=	RVB{255,255,255}
    
    				SI element.compteTiers = ? ALORS
    					resquilleur	+=	1
    				FINSI
    
    				ajouterElement{das2T.honoraires, element}
    			FINSI
    			
    			SI NON element.montantAReprendre ALORS
    				element.mettreAZero{}
    			FINSI
    		FINFAIRE
    	FINSI			
    FIN SI
    
    SI resquilleur > 0 ALORS
    	info{'Attention : Certains bénéficiaires de votre déclaration ne correspondent à aucun compte tiers de votre comptabilité.'}
    FINSI
    
    propositions	:=	?
    editeur.majLignes
    
    SORTIR VRAI
###
'importerBeneficiaire3' 'N-1'
{argPere <Objet>}
    
    |
    	das2Pere<Objet> honoraire<Objet>
    |
    
    das2Pere	::=	'DAS2T_2009'
    das2Pere	:=	argPere
    honoraire	::=	'LigneHonoraire'
    
    SI das2Pere.NP3 <> ? OU das2Pere.RS3 <> ? ALORS
    	honoraire	:=	creer{'LigneHonoraire'}
    	ajouterElement{honoraires2009, honoraire}
    SINON
    	SORTIR FAUX
    FINSI
    
    SI taille{das2Pere.RS3} > 1 ALORS
    	honoraire.id	:=	'RS'
    	honoraire.nom	:=	das2Pere.RS3
    SINON
    	honoraire.id		:=	'NP'
    	honoraire.nom		:=	das2Pere.NP3
    	honoraire.prenom	:=	das2Pere.Pre3
    FINSI
    
    honoraire.numeroSiret		:=	das2Pere.siretDes3
    honoraire.complementAdresse	:=	das2Pere.adr31
    honoraire.numeroAdresse	:=	das2Pere.num3
    honoraire.voie			:=	das2Pere.adr32
    honoraire.codePostal		:=	das2Pere.cp3
    honoraire.ville			:=	das2Pere.ville3
    honoraire.bureau			:=	das2Pere.bureau3
    honoraire.profession		:=	das2Pere.pro3
    
    honoraire.nat01		:=	das2Pere.nat31
    honoraire.montant01	:=	das2Pere.montant31
    honoraire.nat02		:=	das2Pere.nat32
    honoraire.montant02	:=	das2Pere.montant32
    honoraire.nat03		:=	das2Pere.nat33
    honoraire.montant03	:=	das2Pere.montant33
    honoraire.nat04		:=	das2Pere.nat34
    honoraire.montant04	:=	das2Pere.montant34
    honoraire.avantages	:=	das2Pere.avantageV3
    honoraire.caseN		:=	das2Pere.avantageN3
    honoraire.indemnites	:=	das2Pere.indemI3
    honoraire.tvaNette	:=	das2Pere.tvaNet31
    honoraire.caseM		:=	das2Pere.indemM3
    honoraire.tvaNette	+=	das2Pere.tvaNet32
    honoraire.retenue	:=	das2Pere.retenuM3
    honoraire.caseO		:=	das2Pere.retenuO3
    
    SORTIR VRAI
###
'importerBeneficiaire2' 'N-1'
{argPere <Objet>}
    
    |
    	das2Pere<Objet> honoraire<Objet>
    |
    
    das2Pere	::=	'DAS2T_2009'
    das2Pere	:=	argPere
    honoraire	::=	'LigneHonoraire'
    
    SI das2Pere.NP2 <> ? OU das2Pere.RS2 <> ? ALORS
    	honoraire	:=	creer{'LigneHonoraire'}
    	ajouterElement{honoraires2009, honoraire}
    SINON
    	SORTIR FAUX
    FINSI
    
    SI taille{das2Pere.RS2} > 1 ALORS
    	honoraire.id	:=	'RS'
    	honoraire.nom	:=	das2Pere.RS2
    SINON
    	honoraire.id		:=	'NP'
    	honoraire.nom		:=	das2Pere.NP2
    	honoraire.prenom	:=	das2Pere.Pre2
    FINSI
    
    honoraire.numeroSiret		:=	das2Pere.siretDes2
    honoraire.complementAdresse	:=	das2Pere.adr21
    honoraire.numeroAdresse	:=	das2Pere.num2
    honoraire.voie			:=	das2Pere.adr22
    honoraire.codePostal		:=	das2Pere.cp2
    honoraire.ville			:=	das2Pere.ville2
    honoraire.bureau			:=	das2Pere.bureau2
    honoraire.profession		:=	das2Pere.pro2
    
    honoraire.nat01		:=	das2Pere.nat21
    honoraire.montant01	:=	das2Pere.montant21
    honoraire.nat02		:=	das2Pere.nat22
    honoraire.montant02	:=	das2Pere.montant22
    honoraire.nat03		:=	das2Pere.nat23
    honoraire.montant03	:=	das2Pere.montant23
    honoraire.nat04		:=	das2Pere.nat24
    honoraire.montant04	:=	das2Pere.montant24
    honoraire.avantages	:=	das2Pere.avantageV2
    honoraire.caseN		:=	das2Pere.avantageN2
    honoraire.indemnites	:=	das2Pere.indemI2
    honoraire.tvaNette	:=	das2Pere.tvaNet21
    honoraire.caseM		:=	das2Pere.indemM2
    honoraire.tvaNette	+=	das2Pere.tvaNet22
    honoraire.retenue	:=	das2Pere.retenuM2
    honoraire.caseO		:=	das2Pere.retenuO2
    
    SORTIR VRAI
###
'importerBeneficiaire1' 'N-1'
{argPere <Objet>}
    
    |
    	das2Pere<Objet> honoraire<Objet>
    |
    
    das2Pere	::=	'DAS2T_2009'
    das2Pere	:=	argPere
    honoraire	::=	'LigneHonoraire'
    
    SI das2Pere.NP1 <> ? OU das2Pere.RS1 <> ? ALORS
    	honoraire	:=	creer{'LigneHonoraire'}
    	ajouterElement{honoraires2009, honoraire}
    SINON
    	SORTIR FAUX
    FINSI
    
    SI taille{das2Pere.RS1} > 1 ALORS
    	honoraire.id	:=	'RS'
    	honoraire.nom	:=	das2Pere.RS1
    SINON
    	honoraire.id		:=	'NP'
    	honoraire.nom		:=	das2Pere.NP1
    	honoraire.prenom	:=	das2Pere.Pre1
    FINSI
    
    honoraire.numeroSiret		:=	das2Pere.siretDes1
    honoraire.complementAdresse	:=	das2Pere.adr11
    honoraire.numeroAdresse	:=	das2Pere.num1
    honoraire.voie			:=	das2Pere.adr12
    honoraire.codePostal		:=	das2Pere.cp1
    honoraire.ville			:=	das2Pere.ville1
    honoraire.bureau			:=	das2Pere.bureau1
    honoraire.profession		:=	das2Pere.pro1
    
    honoraire.nat01		:=	das2Pere.nat11
    honoraire.montant01	:=	das2Pere.montant11
    honoraire.nat02		:=	das2Pere.nat12
    honoraire.montant02	:=	das2Pere.montant12
    honoraire.nat03		:=	das2Pere.nat13
    honoraire.montant03	:=	das2Pere.montant13
    honoraire.nat04		:=	das2Pere.nat14
    honoraire.montant04	:=	das2Pere.montant14
    honoraire.avantages	:=	das2Pere.avantageV1
    honoraire.caseN		:=	das2Pere.avantageN1
    honoraire.indemnites	:=	das2Pere.indemI1
    honoraire.tvaNette	:=	das2Pere.tvaNet11
    honoraire.caseM		:=	das2Pere.indemM1
    honoraire.tvaNette	+=	das2Pere.tvaNet12
    honoraire.retenue	:=	das2Pere.retenuM1
    honoraire.caseO		:=	das2Pere.retenuO1
    
    SORTIR VRAI
###
'importer2009' 'N-1'
{argPere <Objet>}
    
    |
    	continuer<Booléen>
    	i<Entier> iMax<Entier>
    |
    
    i		:=	1
    iMax		:=	3
    continuer	:=	VRAI
    
    TANT QUE continuer FAIRE
    
    	SI i = 1 ALORS
    		importerBeneficiaire1{argPere}
    	FINSI
    
    	SI i = 2 ALORS
    		importerBeneficiaire2{argPere}
    	FINSI
    
    	SI i = 3 ALORS
    		importerBeneficiaire3{argPere}
    	FINSI
    
    	i	+=	1
    
    	SI i > iMax ALORS
    		continuer	:=	FAUX
    	FINSI
    FINFAIRE
###
