def submit_success(self, appstruct): log.debug("Submitting estimation add") appstruct = get_estimation_dbdatas(appstruct) # Next estimation number for current project snumber = self.context.get_next_estimation_number() estimation = Estimation() estimation.project = self.context estimation.owner = self.request.user estimation = merge_session_with_post( estimation, appstruct['task'] ) estimation.set_sequence_number(snumber) estimation.set_number() estimation.set_name() try: estimation = self.set_task_status(estimation) # Line handling estimation = add_lines_to_estimation(estimation, appstruct) self.dbsession.add(estimation) self.dbsession.flush() self.session.flash(u"Le devis a bien été ajoutée.") except Forbidden, err: self.request.session.flash(err.message, queue='error')
def test_set_number(): est = Estimation() est.project = MagicMock(code="PRO1") est.customer = MagicMock(code="CLI1") est.taskDate = datetime.date(1969, 07, 31) est.set_sequence_number(15) est.set_number() assert est.number == u"PRO1_CLI1_D15_0769"
def test_set_number(self): est = Estimation() est.project = MagicMock(code="PRO1") est.customer = MagicMock(code="CLI1") est.taskDate = datetime.date(1969, 07, 31) est.set_sequenceNumber(15) est.set_number() self.assertEqual(est.number, u"PRO1_CLI1_D15_0769")
def test_interfaces(self): self.assertTrue(verifyObject(ITask, Task())) self.assertTrue(verifyObject(IValidatedTask, Estimation())) self.assertTrue(verifyObject(IPaidTask, Invoice())) self.assertTrue(verifyObject(IPaidTask, CancelInvoice())) self.assertTrue(verifyObject(IInvoice, Invoice())) self.assertTrue(verifyObject(IInvoice, CancelInvoice()))
def submit_success(self, appstruct): log.debug("Submitting estimation add") appstruct = get_estimation_dbdatas(appstruct) customer_id = appstruct["task"]['customer_id'] customer = Customer.get(customer_id) estimation = Estimation( self.context.company, customer, self.context, self.context.phases[0], self.request.user, ) estimation = merge_session_with_post( estimation, appstruct['task'] ) try: # Line handling estimation = add_lines_to_estimation(estimation, appstruct) self.dbsession.add(estimation) self.dbsession.flush() estimation = self.set_task_status(estimation) self.session.flash(u"Le devis a bien été ajouté.") except Forbidden, err: self.request.session.flash(err.message, queue='error')
def estimations(self): """ Query for estimations """ return Estimation.query().join(Task.project)\ .filter(Project.company_id==self.request.context.id)\ .filter(extract('year', Estimation.taskDate)==self.year)
def estimations(self): """ Query for estimations """ return Estimation.query().join(Project)\ .filter(Project.company_id==self.request.context.id)\ .filter(extract('year', Estimation.taskDate)==self.year)
def _add_business_to_all_invoices(session): """ Add a Business entry to all invoices """ from autonomie.models.task import ( Estimation, Invoice, ) logger.debug(u"Adding business to estimations") eindex = 0 iindex = 0 for e in Estimation.query().options( sa.orm.load_only('id', 'name', 'business_type_id', 'project_id') ): eindex += 1 invoices = Invoice.query().options( sa.orm.load_only('id') ).filter_by(estimation_id=e.id).all() if invoices: business = e.gen_business() for deadline in business.payment_deadlines: deadline.invoiced = True session.merge(deadline) for invoice in invoices: iindex += 1 op.execute( u"update task set business_id=%s where id=%s" % ( business.id, invoice.id ) ) op.execute( u"update task join cancelinvoice as c on c.id=task.id " u"set task.business_id=%s where c.invoice_id=%s" % ( business.id, invoice.id ) ) logger.debug(" + %s estimations treated" % eindex) logger.debug(" + %s invoices treated" % iindex) logger.debug(u"Adding business to direct invoices") iindex = 0 for invoice in Invoice.query().options( sa.orm.load_only('id', 'name', 'business_type_id', 'project_id') ).filter_by(estimation_id=None): iindex += 1 business = invoice.gen_business() op.execute( u"update task join cancelinvoice as c on c.id=task.id " u"set task.business_id=%s where c.invoice_id=%s" % ( business.id, invoice.id ) ) logger.debug(" + %s invoices treated" % iindex) session.flush()
def deferred_estimation_widget(node, kw): """ Return a select for estimation selection """ query = Estimation.query() query = query.filter_by(project_id=kw['request'].context.project_id) choices = [(e.id, e.name) for e in query] choices.insert(0, ('', 'Aucun devis')) return deform.widget.SelectWidget(values=choices)
def estimation(): est = Estimation(**ESTIMATION) for line in LINES: est.lines.append(EstimationLine(**line)) for line in DISCOUNTS: est.discounts.append(DiscountLine(**line)) for line in PAYMENT_LINES: est.payment_lines.append(PaymentLine(**line)) return est
def submit_success(self, appstruct): estimation_id = appstruct.get('estimation_id') self.context.estimation_id = estimation_id if estimation_id is not None: estimation = Estimation.get(estimation_id) estimation.geninv = True self.request.dbsession.merge(estimation) self.request.dbsession.merge(self.context) return self.redirect()
def estimation(project, user, customer, company, phase): est = Estimation( company, customer, project, phase, user, ) for key, value in ESTIMATION.items(): setattr(est, key, value) for line in LINES: est.add_line(TaskLine(**line)) for line in DISCOUNTS: est.discounts.append(DiscountLine(**line)) for line in PAYMENT_LINES: est.payment_lines.append(PaymentLine(**line)) est.mentions = [ TaskMention(label='mention1', title='title1', full_text='text1') ] return est
def estimation(project, user, customer, company, phase): est = Estimation( company, customer, project, phase, user, ) for key, value in TASK.items(): setattr(est, key, value) return est
def get_waiting_estimations(cls, *args): from autonomie.models.task import Estimation query = Estimation.query(*args) query = query.filter(Estimation.status == 'wait') query = query.order_by(Estimation.status_date) return query
def test_set_name(): est = Estimation() est.set_sequence_number(5) est.set_name() assert est.name == u"Devis 5"
def query(self): query = Estimation.query().join(Task.project).join(Task.customer) company_id = self.request.context.id query = query.filter(Project.company_id == company_id) return query
def test_set_name(self): est = Estimation() est.set_sequenceNumber(5) est.set_name() self.assertEqual(est.name, u"Devis 5")