pde.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  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. PIRACA_DB_PATH = Path(r"\\h2o\local\4-transversal\BDD\mdb\db_Piraca.mdb")
  31. ### *********** Ne pas modifier en dessous *************** ###
  32. DEFAULT_LOG_DIR.mkdir_p()
  33. WRKDIR.mkdir_p()
  34. def mk_workdir(name):
  35. """ créé le répertoire de travail pour le script 'name' """
  36. workdir = WRKDIR / name
  37. workdir.mkdir_p()
  38. return workdir
  39. # ## Bases du PDE
  40. class ParcDb(AccessSDb):
  41. _path = ""
  42. def __init__(self, **kwargs):
  43. super(AccessSDb, self).__init__(self._path, systemdb=MDW_PATH, uid=UID, pwd=PWD, **kwargs)
  44. class FacturesDb(ParcDb):
  45. _path = FACTURES_DB_PATH
  46. class ControlesDb(ParcDb):
  47. _path = CONTROLES_DB_PATH
  48. class WincanDb(ParcDb):
  49. _path = WINCAN_DB_PATH
  50. class CommunDb(ParcDb):
  51. _path = FACTURES_DB_PATH
  52. class AnalytiqueDb(ParcDb):
  53. _path = ANALYTIQUE_DB_PATH
  54. class BoDb(ParcDb):
  55. _path = BO_DB_PATH
  56. class AgrhumDb(ParcDb):
  57. _path = AGRHUM_DB_PATH
  58. class PdaDb(ParcDb):
  59. _path = PDA_DB_PATH
  60. class PiracaDb(ParcDb):
  61. _path = PIRACA_DB_PATH
  62. # ## Modèles
  63. class Affaire(Model):
  64. """ Modèle de données d'une affaire Analytique """
  65. def __init__(self):
  66. self.DblAffaireId = None, int
  67. self.strMOId = None, str
  68. self.strMOeId = None, str
  69. self.strEntrepriseId = None, str
  70. self.strCommneId = None, str
  71. self.strLieux = None, str
  72. self.strTypeId = None, str
  73. self.dtmCommande = None, datetime
  74. self.Ref = None, str
  75. self.blnMarche = None, bool
  76. self.dblMarche = 0, float
  77. self.intTypeContrat = None, int
  78. self.strCT = None, str
  79. self.strAvancement = None, str
  80. self.strLiaisonControle = None, str
  81. self.intDevisId = None, int
  82. self.blnTarification = False, bool
  83. self.blnAnalyse = False, bool
  84. self.remarques = None, str
  85. self.strSituation = None, str
  86. self.dtmFin = None, datetime
  87. self.intCoefFG = 0, float
  88. class Interv(Model):
  89. """ Modèle de données d'une intervention de contrôle réseaux telle que représentée dan Analytique """
  90. def __init__(self):
  91. self.dblInterventionId = None, int
  92. self.dblAffaireId = 0, int
  93. self.strEquipeId = None, str
  94. self.strEnginId = None, str
  95. self.strRapportId = None, str
  96. self.strCatégorieInterventionId = None, str
  97. self.strTypeInterventionId = None, str
  98. self.dblquantite = 0, float
  99. self.strunite = None, str
  100. self.dtmIntervention = None, datetime
  101. self.dtmDureeIntervention = None, datetime
  102. self.dtmDureeInstallation = None, datetime
  103. self.strcaracteristique1 = None, str
  104. self.strgrandeur1 = None, str
  105. self.strunite1 = None, str
  106. self.strcaracteristique2 = None, str
  107. self.strgrandeur2 = None, str
  108. self.strunite2 = None, str
  109. self.strcaracteristique3 = None, str
  110. self.strgrandeur3 = None, str
  111. self.strunite3 = None, str
  112. self.strLiaisonControle = None, str
  113. self.strarticleId = None, str
  114. self.intPeriode = 0, int
  115. self.blnTarification = False, bool
  116. self.blnAnalyse = False, bool
  117. self.blnFacturer = None, bool
  118. self.remarques = None, str
  119. self.blnPeriode = None, bool
  120. self.dtnPeriodeDebut = None, datetime
  121. self.dtmImportation = None, datetime
  122. self.blnVerifFacture = None, bool
  123. self.strTest = None, str
  124. class Tarification(Model):
  125. """ Modèle de donnée d'une ligne de tarification """
  126. def __init__(self):
  127. self.DblTarifId = None, int
  128. self.DblAffaireId = 0, int
  129. self.strRapportId = None, int
  130. self.strArticleId = None, str
  131. self.dblQuantite = 0, float
  132. self.strUnite = None, str
  133. self.dtmDebut = None, datetime
  134. self.dtmFin = None, datetime
  135. self.bytPeriode = 0, int
  136. self.dblPrixUnitaire = 0, float
  137. self.dblPrixTotal = 0, float
  138. self.bytCodeTiers = 0, int
  139. self.dblTauxTVA = 0, float
  140. self.dblPrixTVA = 0, float
  141. self.strStatut = None, str
  142. self.strNumFacture = None, str
  143. class EnTete(Model):
  144. """ En-tête d'une facture dans FacturesDb """
  145. def __init__(self):
  146. self.lngPieceId = 0, int
  147. self.lngDocId = 0, int
  148. self.lngTiersId = 0, int
  149. self.lngASTRE = None, int
  150. self.strCodeProduit = None, str
  151. self.bytTitreId = 0, int
  152. self.strCodeAdresse = None, str
  153. self.strAdresse1 = None, str
  154. self.strAdresse2 = None, str
  155. self.strAdresse3 = None, str
  156. self.strAdresse4 = None, str
  157. self.strAdresse5 = None, str
  158. self.strPaysIdIso3166 = None , str # (!) le nom réel du champ est '[strPaysIdIso3166-A2]'
  159. self.bytTVATiersId = 0, int
  160. self.strTelephone = None, str
  161. self.strTelecopie = None, str
  162. self.strPortable = None, str
  163. self.strEMail = None, str
  164. self.strWeb = None, str
  165. self.strLangueIdIso639 = None, str
  166. self.strCompteComptable = None, str
  167. self.strDeviseIdIso4217 = None, str
  168. self.bytReglementId = 0, int
  169. self.strReglement = None, str
  170. self.bytClasseTarifId = 0, int
  171. self.bytClasseRemiseTiersId = 0, int
  172. self.bytNbExFacture = 1, int
  173. self.strStatTiers = None, str
  174. self.bytSituationIdPrincipale = 0, int
  175. self.bytSituationIdSecondaire = 0, int
  176. self.memObsEntete = None, str
  177. self.memObsPied = None, str
  178. self.memObsInterne = None, str
  179. self.bytTypeDocumentId = 0, int
  180. self.strStatDocEntete = None, str
  181. self.dblCoursDevise = 1, int
  182. self.dtmCoursDevise = datetime.now(), datetime
  183. self.dtmCreation = datetime.now(), datetime
  184. self.strUserIdCreation = None, str
  185. self.dtmLastMod = datetime.now()
  186. self.strUserIdLastMod = None, str
  187. self.dtmPiece = datetime.now(), datetime
  188. self.dtmFirstPrint = None, datetime
  189. self.dtmLastPrint = None, datetime
  190. self.dtmCompta = None, datetime
  191. self.dtmLivraison = None, datetime
  192. self.dtmEcheance = None, datetime
  193. self.bytTypeTarif = 1, int
  194. self.idEtatEmission = None, str
  195. class Ligne(Model):
  196. """ Ligne d'une facture dans FacturesDb """
  197. def __init__(self):
  198. self.lngPieceId = 0, int
  199. self.intLigneId = 0, int
  200. self.strArticleId = None, str
  201. self.strArticle = None, str
  202. self.bytTVAArticleId = 0, int
  203. self.bytTVAId = 0, int
  204. self.dblTVATaux = 0, float
  205. self.dblQte = 0, float
  206. self.bytUniteIdQuantite = 0, int
  207. self.bytNbDecQuantite = 2, int
  208. self.bytUniteIdPrix = 0, int
  209. self.dblCnvUniteCoef = 1.0, float
  210. self.bytNbDecQuantiteConvertie = 2, int
  211. self.dblPUhtBrutDev = 0, float
  212. self.dblPUttcBrutDev = 0, float
  213. self.dblPUhtNetDev = 0, float
  214. self.dblPUttcNetDev = 0, float
  215. self.bytNbDecPU = 2, int
  216. self.dblPThtBrutDev = 0, float
  217. self.dblPTttcBrutDev = 0, float
  218. self.dblPThtNetDev = 0, float
  219. self.dblPTttcNetDev = 0, float
  220. self.strStatArticle = None, str
  221. self.strStatDocLigne = None, str
  222. self.dblTauxRemise1 = 0, float
  223. self.dblTauxRemise2 = 0, float
  224. self.dblTauxRemise3 = 0, float
  225. self.blnPrestation = False, bool
  226. self.strCompteComptable = None, str
  227. self.memObs = None, str
  228. self.memObsInterne = None, str
  229. self.bytLigneSousTotal = 1, int
  230. self.intLigneIdRattachement = 0, int
  231. self.blnLigneVisible = True, bool
  232. self.blnLigneGeneree = False, bool
  233. self.bytGenerateurId = 0, int
  234. self.dblPUhtBrut = 0, float
  235. self.dblPUttcBrut = 0, float
  236. self.dblPUhtNet = 0, float
  237. self.dblPUttcNet = 0, float
  238. self.dblPThtBrut = 0, float
  239. self.dblPTttcBrut = 0, float
  240. self.dblPThtNet = 0, float
  241. self.dblPTttcNet = 0, float
  242. self.bytClasseRemiseArticleId = 0, int
  243. self.dblPUSaisie = 0, float
  244. self.strPUAff = "", str
  245. self.strQteAff = "", str
  246. class InterventionITV(Model):
  247. """ Modèle d'une intervention vidéo sur un réseau d'assainissement dans Controles """
  248. def __init__(self):
  249. self.lngChantierId = 0, int
  250. self.bytIntervId = 0, int
  251. self.dtmIntervDu = None, datetime
  252. self.dtmIntervAu = None, datetime
  253. self.strEquipeId = "", str
  254. self.intlMaterielID = 0, int
  255. self.bytCommandeId = 0, int
  256. self.lngTroncon = 0, int
  257. self.SI_InspMethod = "", str
  258. self.SI_ReasonOfInspection = "", str
  259. class InspectionTronconWincan(Model):
  260. """ Inspection vidéo d'un tronçon de réseau d'assainissement dans Wincan """
  261. def __init__(self):
  262. self.s_guid = "", str
  263. self.si_guid = "", str
  264. self.nom_chantier = "", str
  265. self.lng_chantier_id = 0, int
  266. self.byt_interv_id = 0, int
  267. self.si_autonumber = 0, int
  268. self.classement_troncons = "", str
  269. self.nom_troncon = "", str
  270. self.startnode_type = "", str
  271. self.endnode_type = "", str
  272. self.sens_ecoul = "", str
  273. self.startnode_z = 0.0, float
  274. self.endnode_z = 0.0, float
  275. self.section_length = 0.0, float
  276. self.section_purpose = "", str
  277. self.section_use = "", str
  278. self.section_type = "", str
  279. self.materiau = "", str
  280. self.annee_pose = 0, int
  281. self.diametre = "", str
  282. self.route = "", str
  283. self.n_route = "", str
  284. self.pipe_shape = "", str
  285. self.pipe_length = 0.0, float
  286. self.arbres = "", str
  287. self.test_ecoulement = "", str
  288. self.si_date = None, datetime
  289. self.nb_ops = 0, int
  290. self.nb_photos = 0, int
  291. self.rate_1 = None, int
  292. self.rate_2 = None, int
  293. self.rate_3 = None, int
  294. self.rate_4 = None, int
  295. self.rate_5 = None, int
  296. self.DG = "", str
  297. if __name__ == "__main__":
  298. for cls in (FacturesDb, ControlesDb, WincanDb, CommunDb, AnalytiqueDb, BoDb, AgrhumDb):
  299. db = cls()
  300. db.assert_connected()
  301. print("connections ok")