def currency_format(context, locale): locale = locales.getLocale(locale) currency = context.bika_setup.getCurrency() symbol = locale.numbers.currencies[currency].symbol def format(val): return '%s %0.2f' % (symbol, val) return format
def __call__(self): context = self.context workflow = getToolByName(context, 'portal_workflow') # Gather relted objects batch = context.aq_parent client = context.getClient() analysis_request = context.getAnalysisRequest() if context.getAnalysisRequest() else None # Gather general data self.invoiceId = context.getId() self.invoiceDate = self.ulocalized_time(context.getInvoiceDate()) self.subtotal = '%0.2f' % context.getSubtotal() self.VATAmount = '%0.2f' % context.getVATAmount() self.total = '%0.2f' % context.getTotal() # Create the batch range start = self.ulocalized_time(batch.getBatchStartDate()) end = self.ulocalized_time(batch.getBatchEndDate()) self.batchRange = "%s to %s" % (start, end) # Gather client data self.clientName = client.Title() self.clientURL = client.absolute_url() self.clientPhone = client.getPhone() self.clientFax = client.getFax() self.clientEmail = client.getEmailAddress() self.clientAccountNumber = client.getAccountNumber() # currency info locale = locales.getLocale('en') self.currency = self.context.bika_setup.getCurrency() self.symbol = locale.numbers.currencies[self.currency].symbol # Get an available client address in a preferred order self.clientAddress = None addresses = ( client.getBillingAddress(), client.getPostalAddress(), client.getPhysicalAddress(), ) for address in addresses: if address.get('address'): self.clientAddress = address break # Gather the line items items = context.invoice_lineitems self.items = [{ 'invoiceDate': self.ulocalized_time(item['ItemDate']), 'description': item['ItemDescription'], 'orderNo': item['OrderNumber'], 'orderNoURL': item['AnalysisRequest'].absolute_url(), 'subtotal': item['Subtotal'], 'VATAmount': item['VATAmount'], 'total': item['Total'], } for item in items] # Render the template return self.template()
def folderitems(self): self.categories = [] bsc = getToolByName(self.context, 'bika_setup_catalog') wf = getToolByName(self.context, 'portal_workflow') mtool = getToolByName(self.context, 'portal_membership') member = mtool.getAuthenticatedMember() roles = member.getRoles() self.allow_edit = 'LabManager' in roles or 'Manager' in roles items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue obj = items[x]['obj'] cat = obj.getCategoryTitle() # Category (upper C) is for display column value items[x]['Category'] = cat if self.do_cats: # category is for bika_listing to groups entries items[x]['category'] = cat if cat not in self.categories: self.categories.append(cat) analyses = [a.UID() for a in self.fieldvalue] items[x]['selected'] = items[x]['uid'] in analyses items[x]['class']['Title'] = 'service_title' calculation = obj.getCalculation() items[x]['Calculation'] = calculation and calculation.Title() locale = locales.getLocale('en') currency = self.context.bika_setup.getCurrency() symbol = locale.numbers.currencies[currency].symbol items[x]['Price'] = "%s %s" % (symbol, obj.getPrice()) items[x]['class']['Price'] = 'nowrap' after_icons = '' if obj.getAccredited(): after_icons += "<img\ src='%s/++resource++bika.lims.images/accredited.png'\ title='%s'>"%(self.context.absolute_url(), _("Accredited")) if obj.getReportDryMatter(): after_icons += "<img\ src='%s/++resource++bika.lims.images/dry.png'\ title='%s'>"%(self.context.absolute_url(), _("Can be reported as dry matter")) if obj.getAttachmentOption() == 'r': after_icons += "<img\ src='%s/++resource++bika.lims.images/attach_reqd.png'\ title='%s'>"%(self.context.absolute_url(), _("Attachment required")) if obj.getAttachmentOption() == 'n': after_icons += "<img\ src='%s/++resource++bika.lims.images/attach_no.png'\ title='%s'>"%(self.context.absolute_url(), _('Attachment not permitted')) if after_icons: items[x]['after']['Title'] = after_icons if self.profile: # Display analyses for this Analysis Service in results? ser = self.profile.getAnalysisServiceSettings(obj.UID()) items[x]['allow_edit'] = ['Hidden', ] items[x]['Hidden'] = ser.get('hidden', obj.getHidden()) self.categories.sort() return items
def folderitems(self): self.categories = [] analyses = self.context.getAnalyses(full_objects=True) self.analyses = dict([(a.getServiceUID(), a) for a in analyses]) self.selected = self.analyses.keys() self.show_categories = \ self.context.bika_setup.getCategoriseAnalysisServices() self.expand_all_categories = False wf = getToolByName(self.context, 'portal_workflow') mtool = getToolByName(self.context, 'portal_membership') self.allow_edit = mtool.checkPermission('Modify portal content', self.context) items = BikaListingView.folderitems(self) analyses = self.context.getAnalyses(full_objects=True) parts = self.context.getSample().objectValues('SamplePartition') partitions = [{'ResultValue': o.Title(), 'ResultText': o.getId()} for o in parts if wf.getInfoFor(o, 'cancellation_state', '') == 'active'] for x in range(len(items)): if not 'obj' in items[x]: continue obj = items[x]['obj'] cat = obj.getCategoryTitle() items[x]['category'] = cat if cat not in self.categories: self.categories.append(cat) items[x]['selected'] = items[x]['uid'] in self.selected items[x]['class']['Title'] = 'service_title' # js checks in row_data if an analysis may be removed. row_data = {} # keyword = obj.getKeyword() # if keyword in review_states.keys() \ # and review_states[keyword] not in ['sample_due', # 'to_be_sampled', # 'to_be_preserved', # 'sample_received', # ]: # row_data['disabled'] = True items[x]['row_data'] = json.dumps(row_data) calculation = obj.getCalculation() items[x]['Calculation'] = calculation and calculation.Title() locale = locales.getLocale('en') currency = self.context.bika_setup.getCurrency() symbol = locale.numbers.currencies[currency].symbol items[x]['before']['Price'] = symbol items[x]['Price'] = obj.getPrice() items[x]['class']['Price'] = 'nowrap' items[x]['Priority'] = '' if items[x]['selected']: items[x]['allow_edit'] = ['Partition', 'min', 'max', 'error'] if not logged_in_client(self.context): items[x]['allow_edit'].append('Price') items[x]['required'].append('Partition') items[x]['choices']['Partition'] = partitions if obj.UID() in self.analyses: analysis = self.analyses[obj.UID()] part = analysis.getSamplePartition() part = part and part or obj items[x]['Partition'] = part.Title() spec = self.get_spec_from_ar(self.context, analysis.getService().getKeyword()) items[x]["min"] = spec["min"] items[x]["max"] = spec["max"] items[x]["error"] = spec["error"] # Add priority premium items[x]['Price'] = analysis.getPrice() priority = analysis.getPriority() items[x]['Priority'] = priority and priority.Title() or '' else: items[x]['Partition'] = '' items[x]["min"] = '' items[x]["max"] = '' items[x]["error"] = '' items[x]["Priority"] = '' after_icons = '' if obj.getAccredited(): after_icons += "<img\ src='%s/++resource++bika.lims.images/accredited.png'\ title='%s'>" % ( self.portal_url, t(_("Accredited")) ) if obj.getReportDryMatter(): after_icons += "<img\ src='%s/++resource++bika.lims.images/dry.png'\ title='%s'>" % ( self.portal_url, t(_("Can be reported as dry matter")) ) if obj.getAttachmentOption() == 'r': after_icons += "<img\ src='%s/++resource++bika.lims.images/attach_reqd.png'\ title='%s'>" % ( self.portal_url, t(_("Attachment required")) ) if obj.getAttachmentOption() == 'n': after_icons += "<img\ src='%s/++resource++bika.lims.images/attach_no.png'\ title='%s'>" % ( self.portal_url, t(_('Attachment not permitted')) ) if after_icons: items[x]['after']['Title'] = after_icons # Display analyses for this Analysis Service in results? ser = self.context.getAnalysisServiceSettings(obj.UID()) items[x]['allow_edit'] = ['Hidden', ] items[x]['Hidden'] = ser.get('hidden', obj.getHidden()) self.categories.sort() return items
def folderitems(self): self.categories = [] bsc = getToolByName(self.context, 'bika_setup_catalog') wf = getToolByName(self.context, 'portal_workflow') mtool = getToolByName(self.context, 'portal_membership') member = mtool.getAuthenticatedMember() roles = member.getRoles() self.allow_edit = 'LabManager' in roles or 'Manager' in roles items = BikaListingView.folderitems(self) part_ids = ['part-1'] for s in self.fieldvalue: if s['partition'] not in part_ids: part_ids.append(s['partition']) partitions = [{'ResultValue':p, 'ResultText':p} for p in part_ids] for x in range(len(items)): if not items[x].has_key('obj'): continue obj = items[x]['obj'] cat = obj.getCategoryTitle() # Category (upper C) is for display column value items[x]['Category'] = cat if self.do_cats: # category is for bika_listing to group entries items[x]['category'] = cat if cat not in self.categories: self.categories.append(cat) analyses = dict([(a['service_uid'], a) for a in self.fieldvalue]) items[x]['selected'] = items[x]['uid'] in analyses.keys() items[x]['class']['Title'] = 'service_title' calculation = obj.getCalculation() items[x]['Calculation'] = calculation and calculation.Title() locale = locales.getLocale('en') currency = self.context.bika_setup.getCurrency() symbol = locale.numbers.currencies[currency].symbol items[x]['Price'] = "%s %s" % (symbol, obj.getPrice()) items[x]['class']['Price'] = 'nowrap' items[x]['allow_edit'] = ['Partition'] if not items[x]['selected']: items[x]['edit_condition'] = {'Partition':False} items[x]['required'].append('Partition') items[x]['choices']['Partition'] = partitions if obj.UID() in self.selected: items[x]['Partition'] = analyses[obj.UID()]['partition'] else: items[x]['Partition'] = '' after_icons = '' if obj.getAccredited(): after_icons += "<img\ src='%s/++resource++bika.lims.images/accredited.png'\ title='%s'>"%(self.context.absolute_url(), _("Accredited")) if obj.getReportDryMatter(): after_icons += "<img\ src='%s/++resource++bika.lims.images/dry.png'\ title='%s'>"%(self.context.absolute_url(), _("Can be reported as dry matter")) if obj.getAttachmentOption() == 'r': after_icons += "<img\ src='%s/++resource++bika.lims.images/attach_reqd.png'\ title='%s'>"%(self.context.absolute_url(), _("Attachment required")) if obj.getAttachmentOption() == 'n': after_icons += "<img\ src='%s/++resource++bika.lims.images/attach_no.png'\ title='%s'>"%(self.context.absolute_url(), _('Attachment not permitted')) if after_icons: items[x]['after']['Title'] = after_icons if self.artemplate: # Display analyses for this Analysis Service in results? ser = self.artemplate.getAnalysisServiceSettings(obj.UID()) items[x]['allow_edit'] = ['Hidden', ] items[x]['Hidden'] = ser.get('hidden', obj.getHidden()) self.categories.sort() return items