pde.py 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. '''
  2. Configuration des scripts
  3. '''
  4. from datetime import datetime
  5. from path import Path
  6. from core.db import AccessSDb
  7. from core.model import Model
  8. MAIN = Path(__file__).parent.parent.abspath()
  9. # Web url of the WsPde web service
  10. # PDE_WS_URL = r"http://localhost:2890/public/WsPDE.asmx"
  11. PDE_WS_URL = r"http://webservices.bas-rhin.fr/CG67.AstreGF.WebServices/public/WsPDE.asmx"
  12. # Chemin d'acces au fichier de secu Access, et login/mdp
  13. MDW_PATH = r"\\h2o\local\4-transversal\BDD\mda\cg67Parc.mdw"
  14. UID = "olivier"
  15. PWD = "massot"
  16. # Dirs
  17. WRKDIR = MAIN / "work"
  18. RSCDIR = MAIN / "resources"
  19. DEFAULT_LOG_DIR = MAIN / "log"
  20. LOG_CONFIG_FILE = MAIN / "logging.yaml"
  21. PDA_FILES_DEST = Path(r"\\h2o\LOCAL\4-transversal\BDD\mdb\PDA\Fichiers_PDA")
  22. FACTURES_DB_PATH = Path(r"\\h2o\local\4-transversal\BDD\mdb\Facture_data.mdb")
  23. CONTROLES_DB_PATH = Path(r"\\h2o\local\4-transversal\BDD\mdb\cg67Parc_data.mdb")
  24. WINCAN_DB_PATH = Path(r"\\h2o\local\4-transversal\BDD\mdb\Wincan\parc_2007\DB\PARC_2007.mdb")
  25. COMMUN_DB_PATH = Path(r"\\h2o\local\4-transversal\BDD\mdb\Commun_Data.mdb")
  26. ANALYTIQUE_DB_PATH = Path(r"\\h2o\local\4-transversal\BDD\mdb\Db_analytique.mdb")
  27. BO_DB_PATH = Path(r"\\h2o\local\4-transversal\BDD\mdb\dbBO.mdb")
  28. AGRHUM_DB_PATH = Path(r"\\h2o\local\4-transversal\BDD\mdb\BDD_ParcRH.mdb")
  29. PDA_DB_PATH = Path(r"\\h2o\local\4-transversal\BDD\mdb\PDA\db_PDA.mdb")
  30. ### *********** Ne pas modifier en dessous *************** ###
  31. DEFAULT_LOG_DIR.mkdir_p()
  32. WRKDIR.mkdir_p()
  33. def mk_workdir(name):
  34. """ créé le répertoire de travail pour le script 'name' """
  35. workdir = WRKDIR / name
  36. workdir.mkdir_p()
  37. return workdir
  38. # ## Bases du PDE
  39. class ParcDb(AccessSDb):
  40. _path = ""
  41. def __init__(self, **kwargs):
  42. super(AccessSDb, self).__init__(self._path, systemdb=MDW_PATH, uid=UID, pwd=PWD, **kwargs)
  43. class FacturesDb(ParcDb):
  44. _path = FACTURES_DB_PATH
  45. class ControlesDb(ParcDb):
  46. _path = CONTROLES_DB_PATH
  47. class WincanDb(ParcDb):
  48. _path = COMMUN_DB_PATH
  49. class CommunDb(ParcDb):
  50. _path = FACTURES_DB_PATH
  51. class AnalytiqueDb(ParcDb):
  52. _path = ANALYTIQUE_DB_PATH
  53. class BoDb(ParcDb):
  54. _path = BO_DB_PATH
  55. class AgrhumDb(ParcDb):
  56. _path = AGRHUM_DB_PATH
  57. class PdaDb(ParcDb):
  58. _path = PDA_DB_PATH
  59. # ## Modèles
  60. class Affaire(Model):
  61. """ Modèle de données d'une affaire Analytique """
  62. def __init__(self):
  63. self.DblAffaireId = None, int
  64. self.strMOId = None, str
  65. self.strMOeId = None, str
  66. self.strEntrepriseId = None, str
  67. self.strCommneId = None, str
  68. self.strLieux = None, str
  69. self.strTypeId = None, str
  70. self.dtmCommande = None, datetime
  71. self.Ref = None, str
  72. self.blnMarche = None, bool
  73. self.dblMarche = 0, float
  74. self.intTypeContrat = None, int
  75. self.strCT = None, str
  76. self.strAvancement = None, str
  77. self.strLiaisonControle = None, str
  78. self.intDevisId = None, int
  79. self.blnTarification = False, bool
  80. self.blnAnalyse = False, bool
  81. self.remarques = None, str
  82. self.strSituation = None, str
  83. self.dtmFin = None, datetime
  84. self.intCoefFG = 0, float
  85. class Interv(Model):
  86. """ Modèle de données d'une intervention de contrôle réseaux """
  87. def __init__(self):
  88. self.dblInterventionId = None, int
  89. self.dblAffaireId = 0, int
  90. self.strEquipeId = None, str
  91. self.strEnginId = None, str
  92. self.strRapportId = None, str
  93. self.strCatégorieInterventionId = None, str
  94. self.strTypeInterventionId = None, str
  95. self.dblquantite = 0, float
  96. self.strunite = None, str
  97. self.dtmIntervention = None, datetime
  98. self.dtmDureeIntervention = None, datetime
  99. self.dtmDureeInstallation = None, datetime
  100. self.strcaracteristique1 = None, str
  101. self.strgrandeur1 = None, str
  102. self.strunite1 = None, str
  103. self.strcaracteristique2 = None, str
  104. self.strgrandeur2 = None, str
  105. self.strunite2 = None, str
  106. self.strcaracteristique3 = None, str
  107. self.strgrandeur3 = None, str
  108. self.strunite3 = None, str
  109. self.strLiaisonControle = None, str
  110. self.strarticleId = None, str
  111. self.intPeriode = 0, int
  112. self.blnTarification = False, bool
  113. self.blnAnalyse = False, bool
  114. self.blnFacturer = None, bool
  115. self.remarques = None, str
  116. self.blnPeriode = None, bool
  117. self.dtnPeriodeDebut = None, datetime
  118. self.dtmImportation = None, datetime
  119. self.blnVerifFacture = None, bool
  120. self.strTest = None, str
  121. class Tarification(Model):
  122. """ Modèle de donnée d'une ligne de tarification """
  123. def __init__(self):
  124. self.DblTarifId = None, int
  125. self.DblAffaireId = 0, int
  126. self.strRapportId = None, int
  127. self.strArticleId = None, str
  128. self.dblQuantite = 0, float
  129. self.strUnite = None, str
  130. self.dtmDebut = None, datetime
  131. self.dtmFin = None, datetime
  132. self.bytPeriode = 0, int
  133. self.dblPrixUnitaire = 0, float
  134. self.dblPrixTotal = 0, float
  135. self.bytCodeTiers = 0, int
  136. self.dblTauxTVA = 0, float
  137. self.dblPrixTVA = 0, float
  138. self.strStatut = None, str
  139. self.strNumFacture = None, str
  140. class EnTete(Model):
  141. """ En-tête d'une facture dans FacturesDb """
  142. def __init__(self):
  143. self.lngPieceId = 0, int
  144. self.lngDocId = 0, int
  145. self.lngTiersId = 0, int
  146. self.lngASTRE = None, int
  147. self.strCodeProduit = None, str
  148. self.bytTitreId = 0, int
  149. self.strCodeAdresse = None, str
  150. self.strAdresse1 = None, str
  151. self.strAdresse2 = None, str
  152. self.strAdresse3 = None, str
  153. self.strAdresse4 = None, str
  154. self.strAdresse5 = None, str
  155. self.strPaysIdIso3166 = None , str # (!) le nom réel du champ est '[strPaysIdIso3166-A2]'
  156. self.bytTVATiersId = 0, int
  157. self.strTelephone = None, str
  158. self.strTelecopie = None, str
  159. self.strPortable = None, str
  160. self.strEMail = None, str
  161. self.strWeb = None, str
  162. self.strLangueIdIso639 = None, str
  163. self.strCompteComptable = None, str
  164. self.strDeviseIdIso4217 = None, str
  165. self.bytReglementId = 0, int
  166. self.strReglement = None, str
  167. self.bytClasseTarifId = 0, int
  168. self.bytClasseRemiseTiersId = 0, int
  169. self.bytNbExFacture = 1, int
  170. self.strStatTiers = None, str
  171. self.bytSituationIdPrincipale = 0, int
  172. self.bytSituationIdSecondaire = 0, int
  173. self.memObsEntete = None, str
  174. self.memObsPied = None, str
  175. self.memObsInterne = None, str
  176. self.bytTypeDocumentId = 0, int
  177. self.strStatDocEntete = None, str
  178. self.dblCoursDevise = 1, int
  179. self.dtmCoursDevise = datetime.now(), datetime
  180. self.dtmCreation = datetime.now(), datetime
  181. self.strUserIdCreation = None, str
  182. self.dtmLastMod = datetime.now()
  183. self.strUserIdLastMod = None, str
  184. self.dtmPiece = datetime.now(), datetime
  185. self.dtmFirstPrint = None, datetime
  186. self.dtmLastPrint = None, datetime
  187. self.dtmCompta = None, datetime
  188. self.dtmLivraison = None, datetime
  189. self.dtmEcheance = None, datetime
  190. self.bytTypeTarif = 1, int
  191. self.idEtatEmission = None, str
  192. class Ligne(Model):
  193. """ Ligne d'une facture dans FacturesDb """
  194. def __init__(self):
  195. self.lngPieceId = 0, int
  196. self.intLigneId = 0, int
  197. self.strArticleId = None, str
  198. self.strArticle = None, str
  199. self.bytTVAArticleId = 0, int
  200. self.bytTVAId = 0, int
  201. self.dblTVATaux = 0, float
  202. self.dblQte = 0, float
  203. self.bytUniteIdQuantite = 0, int
  204. self.bytNbDecQuantite = 2, int
  205. self.bytUniteIdPrix = 0, int
  206. self.dblCnvUniteCoef = 1.0, float
  207. self.bytNbDecQuantiteConvertie = 2, int
  208. self.dblPUhtBrutDev = 0, float
  209. self.dblPUttcBrutDev = 0, float
  210. self.dblPUhtNetDev = 0, float
  211. self.dblPUttcNetDev = 0, float
  212. self.bytNbDecPU = 2, int
  213. self.dblPThtBrutDev = 0, float
  214. self.dblPTttcBrutDev = 0, float
  215. self.dblPThtNetDev = 0, float
  216. self.dblPTttcNetDev = 0, float
  217. self.strStatArticle = None, str
  218. self.strStatDocLigne = None, str
  219. self.dblTauxRemise1 = 0, float
  220. self.dblTauxRemise2 = 0, float
  221. self.dblTauxRemise3 = 0, float
  222. self.blnPrestation = False, bool
  223. self.strCompteComptable = None, str
  224. self.memObs = None, str
  225. self.memObsInterne = None, str
  226. self.bytLigneSousTotal = 1, int
  227. self.intLigneIdRattachement = 0, int
  228. self.blnLigneVisible = True, bool
  229. self.blnLigneGeneree = False, bool
  230. self.bytGenerateurId = 0, int
  231. self.dblPUhtBrut = 0, float
  232. self.dblPUttcBrut = 0, float
  233. self.dblPUhtNet = 0, float
  234. self.dblPUttcNet = 0, float
  235. self.dblPThtBrut = 0, float
  236. self.dblPTttcBrut = 0, float
  237. self.dblPThtNet = 0, float
  238. self.dblPTttcNet = 0, float
  239. self.bytClasseRemiseArticleId = 0, int
  240. self.dblPUSaisie = 0, float
  241. self.strPUAff = "", str
  242. self.strQteAff = "", str
  243. if __name__ == "__main__":
  244. for cls in (FacturesDb, ControlesDb, WincanDb, CommunDb, AnalytiqueDb, BoDb, AgrhumDb):
  245. db = cls()
  246. db.assert_connected()
  247. print("connections ok")