home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1998 #4 / amigaacscoverdisc1998-041998.iso / utilities / commercialdemos / gestacomptedemo / scripts_arexx / tableauxfc.rexx < prev    next >
OS/2 REXX Batch file  |  1997-11-13  |  13KB  |  372 lines

  1. /** $VER: TableauxFC 1.2 (05.09.97)
  2.  ** Auteur: Fabrice SABATIER
  3.  **
  4.  ** Commande ARexx sous GestaLivre V2.0.
  5.  **
  6.  ** Composition des pages d'écriture sous FinalCopy®.
  7.  **
  8.  **/
  9.  
  10. /*****************  Définit les variables d'environnement   ***********************/
  11.  
  12. ADDRESS COMMAND "SYS:Rexxc/rx ENV:GestaCompte.ARexxPréfs" /* execute le script de définitions des préférences */
  13. NOM_PORT_LIVRE   =GETCLIP('Port_Livre')
  14. NOM_ECRAN_PUB    =GETCLIP('Ecran_Livre')
  15. NOM_PORT_FINAL   =GETCLIP('Port_TraitementTexte')
  16. REPERTOIRE       =GETCLIP('Chemin')
  17. NOM_FICHIER      ="Gesta:FeuillesdeStyle/Tableau.final"   /* nom du document sous FinalCopy® */
  18.  
  19. /************************************************************************/
  20.  
  21. OPTIONS RESULTS
  22.  
  23. NL  = '0a'x      /* caractère de fin de ligne */
  24. Tab = '09'x      /* caractère de tabulation */
  25.  
  26. LettreMois.1='JANVIER'  /* définitions des mois à écrire en entête */
  27. LettreMois.2='FEVRIER'
  28. LettreMois.3='MARS'
  29. LettreMois.4='AVRIL'
  30. LettreMois.5='MAI'
  31. LettreMois.6='JUIN'
  32. LettreMois.7='JUILLET'
  33. LettreMois.8='AOUT'
  34. LettreMois.9='SEPTEMBRE'
  35. LettreMois.10='OCTOBRE'
  36. LettreMois.11='NOVEMBRE'
  37. LettreMois.12='DECEMBRE'
  38. Colonne.1 ="420   "     /* repère des colonnes */
  39. Colonne.2 ="761   "
  40. Colonne.3 ="700   "
  41. Colonne.4 ="790   "
  42. Colonne.5 ="590   "
  43. Colonne.12="590S  "
  44. Colonne.13="730   "
  45. Colonne.14="600   "
  46. Colonne.15="610   "
  47. Colonne.16="611   "
  48. Colonne.17="620   "
  49. Colonne.18="620(1)"
  50. Colonne.19="630   "
  51. Colonne.20="635   "
  52. Colonne.21="631   "
  53. Colonne.22="633   "
  54. Colonne.23="634   "
  55. Colonne.24="637   "
  56. Colonne.25="638   "
  57. Colonne.26="641   "
  58. Colonne.27="640   "
  59. Colonne.28="650   "
  60. Colonne.29="661   "
  61. Colonne.30="662   "
  62. Colonne.31="664   "
  63. Colonne.32="665   "
  64. Colonne.33="666   "
  65. Colonne.34="669   "
  66. Colonne.35="670   "
  67. Colonne.36="467   "
  68. Colonne.37="421   "
  69. Colonne.38="200   "
  70. Colonne.39="629   "
  71.  
  72. IF NOM_PORT_FINAL='FINALC.1' THEN Ecran='ScrToFront'
  73. IF NOM_PORT_FINAL='FINALW.1' THEN Ecran='ScreenToFront'
  74.  
  75. SIGNAL ON SYNTAX  /* détourne les messages d'erreurs */
  76.  
  77. IF~SHOW(L,"rexxsupport.library")THEN DO   /* teste si la library est présente */
  78.  IF~ADDLIB("rexxsupport.library",0,-30,0) THEN DO
  79.      SAY "rexxsupport.library est introuvable !"
  80.      EXIT
  81.  END
  82. END
  83. FinalCopy_II=1
  84. IF~SHOW(p,NOM_PORT_FINAL) THEN DO
  85.   FinalCopy_II=0
  86.   ADDRESS COMMAND "RUN >NIL: "||REPERTOIRE||" >NIL:"
  87.   DO 10
  88.      IF SHOW(p,NOM_PORT_FINAL) THEN DO
  89.          FinalCopy_II=1
  90.          LEAVE
  91.          END
  92.      CALL DELAY(100)
  93.   END
  94. END
  95.  
  96. IF FinalCopy_II THEN DO
  97.  
  98. /* ouvre la library rexxreqtools.library pour les messages d'erreurs */
  99.  CALL addlib("rexxreqtools.library",0,-30,0)
  100.  
  101.  ADDRESS VALUE NOM_PORT_LIVRE /* adresse du port Arexx */
  102.  
  103.  DO I=1 TO 40           /* initialise le tableau 'Somme' à zéro */
  104.   Somme.i=0
  105.  END
  106.  
  107.  showyear               /* demande l'année actuelle */
  108.  AnneeActuelle=result   /* et la mémorise dans la variable 'AnneeActuelle'*/
  109.  showmonth              /* demande le mois actuel */
  110.  MoisActuel=result      /* et le mémorise dans la variable 'MoisActuel' */
  111.  numboperations         /* cherche le nombre d'opérations dans le mois */
  112.  nbre=result            /* et le mémorise dans la variable 'nbre' */
  113.  PremiereLigne=1
  114.  NbreLigne=nbre
  115.  NbredePages=TRUNC(nbre/29) /* calcule le nombre de pages */
  116.  IF (NbredePages*29)<NbreLigne THEN NbredePages=NbredePages+1
  117.  
  118.  ADDRESS VALUE NOM_PORT_FINAL /* adresse du port ARexx de FinalCopy® */
  119.  
  120.  DO Page=1 TO NbredePages
  121.   PremiereLigne=((Page-1)*29)+1/* reprend l'examem en ligne 30,59,88... */
  122.   open NOM_FICHIER             /* ouvre la mise en page sous FinalCopy® */
  123.   IF NOM_PORT_FINAL='FINALC.' THEN NOM_PORT_FINAL='FINALC.'||Page
  124.   IF NOM_PORT_FINAL='FINALW.' THEN NOM_PORT_FINAL='FINALW.'||Page
  125.   ADDRESS VALUE NOM_PORT_FINAL /* adresse du port ARexx de FinalCopy® */
  126.   CALL DELAY(100)              /* attend la fin du chargement */
  127.   CALL ComposePageG            /* rempli la page de gauche */
  128.   CALL ComposePageD            /* rempli la page de droite */
  129.  
  130.  
  131. FICHIER="GESTA:Tableaux/Tableau_" || LettreMois.MoisActuel || AnneeActuelle  /* chemin et nom du fichier sauvegardé */
  132. Save FICHIER  
  133.  
  134.  END
  135. END
  136.  
  137. EXIT                       /* sort */
  138.  
  139. /**********************************************/
  140. /* Rempli chaque colonne de la page de gauche */
  141. /**********************************************/
  142. ComposePageG:
  143.  
  144. fontsize 6                      /* règle la taille de la fonte à 6 */
  145. Ecran                           /* passe l'écran de FinalCopy® au premier plan */
  146. altdown                         /* position le curseur en début de page */
  147. ctrldown
  148. cursor up
  149. altup
  150. ctrlup
  151.  
  152. type Tab||AnneeActuelle         /* saisie l'année */
  153. DO i=1 TO 5                     /* position le curseur à droite de la page */
  154.  type Tab
  155. END
  156. type "Page "||Page              /* saisie le n° de la page */
  157. cursor down                     /* va à la ligne */
  158. type Tab||LettreMois.MoisActuel /* saisie le mois en toutes lettres */
  159.  
  160. DO i=1 TO 8  /* positionne le curseur sur la première ligne du tableau */
  161.  cursor down                    /* va à la ligne */
  162. END
  163.  
  164. CALL ReportPageG                /* rempli la ligne de 'Report' */
  165.  
  166. /* examine toutes les opérations une à une */
  167. DO i=PremiereLigne TO PremiereLigne+28
  168.  IF i>nbre THEN LEAVE           /* dernière ligne donc sort de la boucle */
  169.  ADDRESS VALUE NOM_PORT_LIVRE         /* adresse du port Arexx */
  170.  operation i
  171.  PARSE VAR result jour '/' . '/' Nature '/' Somme '/' Libelle '/' NomPoste '/' .
  172.  
  173.  ADDRESS VALUE NOM_PORT_FINAL   /* Adresse du port ARexx de FinalCopy® */
  174.  CALL CreerLignePageG           /* appel la routine de saisie des lignes */
  175.  cursor down                    /* va deux fois à la ligne */
  176.  cursor down
  177. END
  178.  
  179. CALL ToTauxPageG                /* appel la routine de saisie des totaux */
  180.  
  181. RETURN
  182. /*--------------------------------------------*/
  183. /* Rempli chaque ligne de la page de gauche   */
  184. /*--------------------------------------------*/
  185. CreerLignePageG:
  186.  DO C=1 TO 5      /* saisie les colonnes des 'ENTREES' */
  187.    IF NomPoste=Colonne.C THEN DO
  188.                             type Tab||Somme
  189.                             Somme.C=Somme.C+Somme
  190.                            END
  191.    ELSE type Tab
  192.  END              /* saisie les colonnes 'Caisse banque2 banque1 */
  193.  IF Nature="CashInflow"  THEN DO
  194.                                  type Tab||Somme
  195.                                  Somme.6=Somme.6+Somme
  196.                                 END
  197.  ELSE type Tab
  198.  IF Nature="Bank2Entry" THEN DO
  199.                                  type Tab||Somme
  200.                                  Somme.7=Somme.7+Somme
  201.                                 END
  202.  ELSE type Tab
  203.  IF Nature="Bank1Entry" THEN DO
  204.                                  type Tab||Somme
  205.                                  Somme.8=Somme.8+Somme
  206.                                 END
  207.  ELSE type Tab
  208.  type Tab||Jour||Tab||Libelle  /* saisie la date et le libellé */
  209.  IF LEFT(Nature,6)="Entree" THEN RETURN /* passe à la ligne suivante si déjà inscrit */
  210.  IF Nature="Bank1Outflow" THEN DO
  211.                                  type Tab||Somme
  212.                                  Somme.9=Somme.9+Somme
  213.                                 END
  214.  ELSE type Tab
  215.  IF Nature="Bank2Outflow" THEN DO
  216.                                  type Tab||Somme
  217.                                  Somme.10=Somme.10+Somme
  218.                                 END
  219.  ELSE type Tab
  220.  IF Nature="CashPayment" THEN  DO
  221.                                  type Tab||Somme
  222.                                  Somme.11=Somme.11+Somme
  223.                                 END
  224.  ELSE type Tab
  225.  DO C=12 TO 18     /* saisie les colonnes des 'SORTIES' */
  226.    IF NomPoste=Colonne.C THEN DO
  227.                             type Tab||Somme
  228.                             Somme.C=Somme.C+Somme
  229.                             RETURN
  230.                            END
  231.    ELSE type Tab
  232.  END
  233. RETURN
  234. /*--------------------------------------------------*/
  235. /* Rempli la ligne de 'Report' de la page de gauche */
  236. /*--------------------------------------------------*/
  237. ReportPageG:
  238. DO C=1 TO 8             /* saisie les colonnes des 'ENTREES' */
  239.    type Tab || Somme.C
  240. END
  241. type Tab || Tab
  242. DO C=9 TO 18            /* saisie les colonnes des 'SORTIES' */
  243.   type Tab || Somme.C
  244. END
  245. cursor down
  246. cursor down
  247. RETURN
  248. /*-----------------------------------------------*/
  249. /* Rempli la dernière ligne de la page de gauche */
  250. /*-----------------------------------------------*/
  251. ToTauxPageG:
  252. altdown                          /* position le curseur en début de page */
  253. ctrldown
  254. cursor up
  255. altup
  256. ctrlup
  257. DO L=1 TO 69                     /* position le curseur sur la dernière ligne */
  258.  cursor down
  259. END
  260. DO C=1 TO 8                      /* saisie les colonnes des 'ENTREES' */
  261.    type Tab || Somme.C
  262. END
  263. type Tab || Tab
  264. DO C=9 TO 18                     /* saisie les colonnes des 'SORTIES' */
  265.   type Tab || Somme.C
  266. END
  267. RETURN
  268. /**********************************************/
  269. /* Rempli chaque colonne de la page de droite */
  270. /**********************************************/
  271. ComposePageD:
  272.  cursor down
  273.  cursor down
  274.  cursor down
  275.  type "Suite page "||Page
  276. DO i=1 TO 8                      /* positionne le curseur dans le tableau */
  277.  cursor down
  278. END
  279.  
  280. CALL ReportPageD                 /* rempli la ligne de 'Report' */
  281.  
  282. DO i=PremiereLigne TO PremiereLigne+28  /* passe toutes les opérations une à une */
  283.  IF i>nbre THEN LEAVE            /* dernière ligne donc sort de la boucle */
  284.  ADDRESS VALUE NOM_PORT_LIVRE /* adresse du port Arexx */
  285.  operation i
  286.  PARSE VAR result jour '/' . '/' Nature '/' Somme '/' Libelle '/' NomPoste '/' .
  287.  
  288.  ADDRESS VALUE NOM_PORT_FINAL    /* adresse du port ARexx de FinalCopy® */
  289.  CALL CreerLignePageD            /* saisie une ligne */
  290.  cursor down                     /* va deux fois à la ligne */
  291.  cursor down
  292.  
  293. END
  294. CALL TotauxPageD                 /* appel la routine de saisie des totaux */
  295.  
  296. RETURN
  297. /*--------------------------------------------*/
  298. /* Rempli chaque ligne de la page de droite   */
  299. /*--------------------------------------------*/
  300. CreerLignePageD:
  301. DO C=19 TO 39                    /* saisie une ligne */
  302.    IF NomPoste=Colonne.C THEN DO
  303.                             type Tab||Somme
  304.                             Somme.C=Somme.C+Somme   /* calcule la somme des colonnes */
  305.                            END
  306.    ELSE type Tab
  307. END
  308.  
  309. IF LEFT(NomPoste,3)="DIV" THEN DO /* saisie la colonne 'DIVERS' */
  310.                              ADDRESS VALUE NOM_PORT_LIVRE /* adresse du port Arexx */
  311.                              numbaccounts                 /* demande le nombre de comptes */
  312.                              NombrePos=result             /* et le mémorise */
  313.                              DO p=1 TO NombrePos          /* passe en revue tous */
  314.                                account p                  /* les comptes connus */
  315.                                LibellePoste=result
  316.                                IF NomPoste=LEFT(LibellePoste,6) THEN LEAVE
  317.                              END
  318.                              ADDRESS VALUE NOM_PORT_FINAL /* adresse du port ARexx de FinalCopy® */
  319.                              PARSE VAR LibellePoste . LibellePoste /* enlève 'DIVERx ' */
  320.                              type Tab||LEFT(LibellePoste,20) /* saisie la désignation */
  321.                              type Tab||Somme                 /* puis le montant */
  322.                              Somme.40=Somme.40+Somme         /* somme de la colonne */
  323.                            END
  324.  
  325. RETURN
  326. /*--------------------------------------------------*/
  327. /* Rempli la ligne de 'Report' de la page de droite */
  328. /*--------------------------------------------------*/
  329. ReportPageD:
  330. DO C=19 TO 39
  331.    type Tab || Somme.C       /* renseigne les colonnes */
  332. END
  333. type Tab || Tab || Somme.40  /* renseigne la colonne 'DIVERS montants' */
  334. cursor down
  335. cursor down
  336. RETURN
  337. /*-----------------------------------------------*/
  338. /* Rempli la dernière ligne de la page de droite */
  339. /*-----------------------------------------------*/
  340. TotauxPageD:
  341. altdown                      /* position le curseur sur la dernière ligne */
  342. ctrldown
  343. cursor down
  344. altup
  345. ctrlup
  346. DO C=19 TO 39
  347.   type Tab || Somme.C        /* renseigne les colonnes */
  348. END
  349. type Tab || Tab || Somme.40  /* renseigne la colonne 'DIVERS montants' */
  350. RETURN
  351. /*********************************/
  352. /* Traite les messages d'erreurs */
  353. /*********************************/
  354. SYNTAX:
  355. IF RC=13 THEN call rtezrequest( "      Environnement serveur non trouvé !!!" || NL || NL ||,
  356.                                 "Le nom du port ARexx utilisé dans le script est : "|| NL || NL ||,
  357.                                 "-----------------------------------------------"|| NL ||,
  358.                                 "                  " || NOM_PORT_LIVRE || NL ||,
  359.                                 "-----------------------------------------------"|| NL || NL ||,
  360.                                 "Note : Pour réparer ceci, veuillez fermer le module"|| NL ||,
  361.                 "       'Livre' et modifier le type d'outil 'REXX' de"|| NL ||,
  362.                 "       l'icône, puis le relancer."|| NL || NL ||,
  363.                 "       ATTENTION aux minuscules/majuscules      ",,
  364.                 "OK", "Informations","rt_pubscrname="||NOM_ECRAN_PUB "rt_font=Gestacompte.font/8")
  365. ELSE call rtezrequest(errortext(RC),"Vu",,"rt_pubscrname="||NOM_PORT_LIVRE "rt_font=Gestacompte.font/8")
  366.  
  367.  
  368. ADDRESS VALUE NOM_PORT_FINAL
  369. QUIT (force)
  370.  
  371. EXIT
  372.