def iter_bills(self, subscription): orders = self.iter_orders() for o in orders: b = Bill() b._url = o._bill['url'] b.id = '%s.%s' % (subscription.id, o.id) b.date = o.date b.price = o.total b.format = o._bill['format'] b.currency = b.get_currency(self.get_currency()) b.vat = o.tax yield b
def iter_bills(self, subscription): orders = self.iter_orders() for o in orders: b = Bill() b._url = o._bill['url'] b.id = '%s.%s' % (subscription.id, o.id) b.date = o.date b.price = o.total b.format = o._bill['format'] b.currency = b.get_currency(self.get_currency()) b.vat = o.tax yield b
def iter_documents(self, subscription): orders = self.iter_orders() for o in orders: b = Bill() b.url = unicode(o._bill['url']) b.id = '%s.%s' % (subscription.id, o.id) b.date = o.date b.price = o.total b.format = o._bill['format'] b.type = u'bill' b.currency = b.get_currency(self.get_currency()) b.label = '%s %s' % (subscription.label, o.date) b.vat = o.tax yield b
def iter_documents(self, subscription): docs, docs_len, check, month_back, date = list(), -1, 0, 6, None # First request is known bills = self.request('pnrs') while check < month_back: # If not first if docs_len > -1 and date: if check > 0: # If nothing, we try 4 weeks back date = (datetime.strptime(date, '%Y-%m-%d') - relativedelta(weeks=4)).strftime('%Y-%m-%d') else: # Add 8 weeks to last date to be sure to get all date = (datetime.combine(date, datetime.min.time()) + relativedelta(weeks=8)).strftime('%Y-%m-%d') bills = self.request('pnrs?date=%s' % date) docs_len = len(docs) for proof, pnr, trip in zip(bills['proofs'], bills['pnrs'], bills['trips']): # Check if not already in docs list for doc in docs: if vars(doc)['id'].split('_', 1)[1] == pnr['id']: break else: b = Bill() b.id = '%s_%s' % (subscription.id, pnr['id']) b._url = proof['url'] b.date = Date().filter(proof['created_at']) b.format = u"pdf" b.label = u'Trajet du %s' % Date().filter( trip['departure_date']) b.type = DocumentTypes.BILL b.vat = CleanDecimal().filter('0') if pnr['cents']: b.price = CleanDecimal().filter( format(pnr['cents'] / float(100), '.2f')) b.currency = pnr['currency'] docs.append(b) check += 1 # If a new bill is found, we reset check if docs_len < len(docs): date = b.date check = 0 return iter(docs)
def iter_documents(self, subscription): docs, docs_len, check, month_back, date = list(), -1, 0, 6, None # First request is known bills = self.request('pnrs') while check < month_back: # If not first if docs_len > -1 and date: if check > 0: # If nothing, we try 4 weeks back date = (datetime.strptime(date, '%Y-%m-%d') - relativedelta(weeks=4)).strftime('%Y-%m-%d') else: # Add 8 weeks to last date to be sure to get all date = (datetime.combine(date, datetime.min.time()) + relativedelta(weeks=8)).strftime('%Y-%m-%d') bills = self.request('pnrs?date=%s' % date) docs_len = len(docs) for proof, pnr, trip in zip(bills['proofs'], bills['pnrs'], bills['trips']): # Check if not already in docs list for doc in docs: if vars(doc)['id'].split('_', 1)[1] == pnr['id']: break else: b = Bill() b.id = '%s_%s' % (subscription.id, pnr['id']) b._url = proof['url'] b.date = Date().filter(proof['created_at']) b.format = u"pdf" b.label = u'Trajet du %s' % Date().filter(trip['departure_date']) b.type = u"bill" b.vat = CleanDecimal().filter('0') if pnr['cents']: b.price = CleanDecimal().filter(format(pnr['cents']/float(100), '.2f')) b.currency = pnr['currency'] docs.append(b) check += 1 # If a new bill is found, we reset check if docs_len < len(docs): date = b.date check = 0 return iter(docs)