home *** CD-ROM | disk | FTP | other *** search
/ Freelog Special Freeware 31 / FreelogHS31.iso / ArgentCompta / Bankperfect / bp.exe / Scripts / Ventilate / ventilate.py < prev   
Text File  |  2006-11-04  |  4KB  |  115 lines

  1. import BP
  2.  
  3. def AddLine(Sender):
  4.   global value
  5.   v = EVal.Text
  6.   try:
  7.     v = round(abs(float(v.replace(",", ".").replace(" ", ""))), 2)
  8.   except:
  9.     v = 0
  10.  
  11.   if v == 0: BP.MsgBox("Le montant est incorrect", 64)
  12.   elif v > value: BP.MsgBox("Le montant saisi dΘpasse le montant disponible (%s)" %("%.2f" %value), 64)
  13.   else:
  14.     i = CCtg.ItemIndex - 1
  15.     CIndex = CIndexes[i]
  16.     ops.append((EInfo.Text, CIndex, v))
  17.     if i == -1: List.Items.Add("Sans catΘgorie (%.2f)" %v)
  18.     else: List.Items.Add("%s (%.2f)" %(CTrimNames[i], v))
  19.     value = round(value - v, 2)
  20.     EVal.Text = "%.2f" %value
  21.     EVal.SetFocus()
  22.  
  23. def RemoveLine(Sender):
  24.   global value
  25.   i = List.ItemIndex
  26.   if i > -1:
  27.     v = ops[i][2]
  28.     del ops[i]
  29.     List.Items.Delete(i)
  30.     value = round(value + v, 2)
  31.     EVal.Text = "%.2f" %value
  32.     c = len(List.Items)
  33.     if c > 0:
  34.       if i >= c: i = c - 1
  35.       List.ItemIndex = i
  36.  
  37. def Ventil(Sender):
  38.   if value > 0:
  39.     BP.MsgBox("Le montant d'origine n'a pas ΘtΘ totalement ventilΘ", 64)
  40.     return
  41.   BP.LineDelete(a, i)
  42.   last = len(ops)
  43.   for idx, op in enumerate(ops):
  44.     BP.LineAdd(a, date, mode, "[%d/%d] %s" %(idx + 1, last, tiers), "%s (Total: %.2f)" %(op[0], ovalue), op[1], sgn * op[2], 0)
  45.   BP.AccountRefreshScreen()
  46.   f.Close()
  47.  
  48.  
  49. cnames = BP.CategName
  50. CTrimNames = []
  51. CPositions = {-1: -1}
  52. CIndexes = {-1: -1}
  53. CNames = []
  54. for i, c in enumerate(cnames):
  55.   p = c.find("=")
  56.   CNames.append(c[p+1:])
  57.   CTrimNames.append(c[p+1:].strip())
  58.   idx = int(c[:p])
  59.   CPositions[idx] = i
  60.   CIndexes[i] = idx
  61.  
  62. CNames = ["-- Aucune --"] + CNames
  63. i = BP.LineSelect(-1)
  64. a = BP.AccountCurrent()
  65. ovalue = round(BP.OperationAmount[a][i], 2)
  66. value = abs(ovalue)
  67. if ovalue < 0: sgn = -1
  68. else: sgn = 1
  69. date = BP.OperationDate[a][i]
  70. mode = BP.OperationMode[a][i]
  71. if mode.find("Chq ") == 0: mode = "ChΦque Θmis"
  72. tiers = BP.Operationthirdparty[a][i]
  73. info = BP.OperationDetails[a][i]
  74. categ = BP.OperationCateg[a][i]
  75. ops = []
  76.  
  77. f = CreateComponent("TForm", None)
  78. f.SetProps(Position="poMainFormCenter", Width=650, Height=330, BorderStyle="bsSingle", BorderIcons=["biSystemMenu","biMinimize"], Caption="Ventilation d'une opΘration")
  79. f.Font.Name = "Tahoma"
  80.  
  81. L1 = CreateComponent("TLabel", f)
  82. L1.SetProps(Parent=f, Left=30, Top=74, Caption="DΘtail :")
  83. L2 = CreateComponent("TLabel", f)
  84. L2.SetProps(Parent=f, Left=30, Top=104, Caption="CatΘgorie :")
  85. L3 = CreateComponent("TLabel", f)
  86. L3.SetProps(Parent=f, Left=30, Top=25, Caption="%s (montant : %.2f)" %(tiers, value))
  87. L3.Font.Style = ["fsBold"]
  88. L4 = CreateComponent("TLabel", f)
  89. L4.SetProps(Parent=f, Left=30, Top=138, Caption="Montant :")
  90.  
  91. EInfo = CreateComponent("TEdit", f)
  92. CCtg = CreateComponent("TComboBox", f)
  93. EVal = CreateComponent("TEdit", f)
  94.  
  95. EInfo.SetProps(Parent=f, Left=120, Top=74, Width=130, Text=info)
  96. CCtg.SetProps(Parent=f, Left=120, Top=104, Width=130, Style="csDropDownList")
  97. CCtg.Items.Text = "\n".join(CNames)
  98. CCtg.ItemIndex = CPositions[categ] + 1
  99. EVal.SetProps(Parent=f, Left=120, Top=138, Width=130, Text="%.2f" %value)
  100.  
  101. BAdd = CreateComponent("TButton", f)
  102. BAdd.SetProps(Parent=f, Left=284, Top=88, Width=75, Height=25, Caption="Ajouter ╗", OnClick=AddLine)
  103.  
  104. BDel = CreateComponent("TButton", f)
  105. BDel.SetProps(Parent=f, Left=284, Top=120, Width=75, Height=25, Caption="½ Retirer", OnClick=RemoveLine)
  106.  
  107. List = CreateComponent("TListBox", f)
  108. List.SetProps(Parent=f, Left=390, Top=68, Width=222, Height=104)
  109. List.Items.Text = ""
  110.  
  111. BCancel = CreateComponent("TButton", f)
  112. BCancel.SetProps(Parent=f, Left=225, Top=230, Width=90, Height=25, Caption="Annuler", Cancel=1, ModalResult=2)
  113. BOK = CreateComponent("TButton", f)
  114. BOK.SetProps(Parent=f, Left=325, Top=230, Width=90, Height=25, Caption="Ventiler", Default=1, OnClick=Ventil)
  115. f.ShowModal()