91 | | if (options["list"] or options["reset"]) and not names : |
92 | | names = ["*"] |
93 | | |
94 | | if options["add"] : |
95 | | billingcodes = [] |
96 | | for bname in names : |
97 | | billingcode = self.storage.getBillingCode(bname) |
98 | | if billingcode.Exists : |
99 | | if options["skipexisting"] : |
100 | | self.printInfo(_("Billing code [%s] already exists, skipping.") % billingcode.BillingCode) |
101 | | else : |
102 | | self.printInfo(_("Billing code [%s] already exists, will be modified.") % billingcode.BillingCode) |
103 | | billingcodes.append(billingcode) |
104 | | else : |
105 | | billingcode = self.storage.addBillingCode(bname) |
106 | | if not billingcode.Exists : |
107 | | raise PyKotaToolError, _("Impossible to add billingcode %s") % bname |
108 | | else : |
109 | | billingcodes.append(billingcode) |
110 | | else : |
111 | | billingcodes = self.storage.getMatchingBillingCodes(",".join(names)) |
112 | | if not billingcodes : |
113 | | raise PyKotaCommandLineError, _("There's no billingcode matching %s") % " ".join(names) |
114 | | |
115 | | for billingcode in billingcodes : |
116 | | if options["delete"] : |
117 | | billingcode.delete() |
118 | | elif options["list"] : |
119 | | print "%s [%s] %s %s %s %.2f %s" % \ |
120 | | (billingcode.BillingCode, billingcode.Description, \ |
121 | | billingcode.PageCounter, \ |
122 | | _("pages"), \ |
123 | | _("and"), \ |
124 | | billingcode.Balance, \ |
125 | | _("credits")) |
126 | | else : |
127 | | if options["reset"] : |
128 | | billingcode.reset() |
129 | | if options["description"] is not None : |
130 | | billingcode.setDescription(options["description"].strip()) |
| 91 | if options["delete"] : |
| 92 | self.display("Processing...\n") |
| 93 | todelete = self.storage.getMatchingBillingCodes(",".join(names)) |
| 94 | nbtotal = len(todelete) |
| 95 | for i in range(nbtotal) : |
| 96 | todelete[i].delete() |
| 97 | percent = 100.0 * float(i) / float(nbtotal) |
| 98 | self.display("\r%.02f%%" % percent) |
| 99 | self.display("\r100.00%%\r ") |
| 100 | self.display("\r%s\n" % _("Done.")) |
| 101 | else : |
| 102 | if (options["list"] or options["reset"]) and not names : |
| 103 | names = ["*"] |
| 104 | |
| 105 | if options["add"] : |
| 106 | billingcodes = [] |
| 107 | for bname in names : |
| 108 | billingcode = self.storage.getBillingCode(bname) |
| 109 | if billingcode.Exists : |
| 110 | if options["skipexisting"] : |
| 111 | self.printInfo(_("Billing code [%s] already exists, skipping.") % billingcode.BillingCode) |
| 112 | else : |
| 113 | self.printInfo(_("Billing code [%s] already exists, will be modified.") % billingcode.BillingCode) |
| 114 | billingcodes.append(billingcode) |
| 115 | else : |
| 116 | billingcode = self.storage.addBillingCode(bname) |
| 117 | if not billingcode.Exists : |
| 118 | raise PyKotaToolError, _("Impossible to add billingcode %s") % bname |
| 119 | else : |
| 120 | billingcodes.append(billingcode) |
| 121 | else : |
| 122 | billingcodes = self.storage.getMatchingBillingCodes(",".join(names)) |
| 123 | if not billingcodes : |
| 124 | raise PyKotaCommandLineError, _("There's no billingcode matching %s") % " ".join(names) |
| 125 | |
| 126 | for billingcode in billingcodes : |
| 127 | if options["list"] : |
| 128 | print "%s [%s] %s %s %s %.2f %s" % \ |
| 129 | (billingcode.BillingCode, billingcode.Description, \ |
| 130 | billingcode.PageCounter, \ |
| 131 | _("pages"), \ |
| 132 | _("and"), \ |
| 133 | billingcode.Balance, \ |
| 134 | _("credits")) |
| 135 | else : |
| 136 | if options["reset"] : |
| 137 | billingcode.reset() |
| 138 | if options["description"] is not None : |
| 139 | billingcode.setDescription(options["description"].strip()) |