Mark exportable invoice as deleted, instead of actually deleting
and allow bulk-delete, but prevent edit
This commit is contained in:
		
							parent
							
								
									74bf66cd71
								
							
						
					
					
						commit
						831403c90a
					
				
					 1 changed files with 20 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -54,6 +54,8 @@ class ExportableInvoiceView(MasterView):
 | 
			
		|||
    model_class = QuickbooksExportableInvoice
 | 
			
		||||
    route_prefix = 'quickbooks.exportable_invoices'
 | 
			
		||||
    url_prefix = '/quickbooks/exportable-invoices'
 | 
			
		||||
    editable = False
 | 
			
		||||
    bulk_deletable = True
 | 
			
		||||
    has_versions = True
 | 
			
		||||
 | 
			
		||||
    labels = {
 | 
			
		||||
| 
						 | 
				
			
			@ -171,6 +173,8 @@ class ExportableInvoiceView(MasterView):
 | 
			
		|||
            g.check_all_handler = 'allChecked'
 | 
			
		||||
 | 
			
		||||
    def grid_extra_class(self, invoice, i):
 | 
			
		||||
        if invoice.deleted:
 | 
			
		||||
            return 'warning'
 | 
			
		||||
        if not self.exportable(invoice):
 | 
			
		||||
            if invoice.status_code in (invoice.STATUS_DEPTS_IGNORED,
 | 
			
		||||
                                       invoice.STATUS_EXPORTED,
 | 
			
		||||
| 
						 | 
				
			
			@ -203,6 +207,22 @@ class ExportableInvoiceView(MasterView):
 | 
			
		|||
        """
 | 
			
		||||
        return invoice.status_code == invoice.STATUS_EXPORTABLE
 | 
			
		||||
 | 
			
		||||
    def deletable_instance(self, invoice):
 | 
			
		||||
        if invoice.deleted:
 | 
			
		||||
            return False
 | 
			
		||||
        if invoice.exported:
 | 
			
		||||
            return False
 | 
			
		||||
        return True
 | 
			
		||||
 | 
			
		||||
    def delete_instance(self, invoice):
 | 
			
		||||
        app = self.get_rattail_app()
 | 
			
		||||
        session = app.get_session(invoice)
 | 
			
		||||
        invoice.deleted = app.make_utc()
 | 
			
		||||
        # nb. when bulk-deleting, user is in different session
 | 
			
		||||
        invoice.deleted_by = session.merge(self.request.user)
 | 
			
		||||
        invoice.status_code = invoice.STATUS_DELETED
 | 
			
		||||
        session.flush()
 | 
			
		||||
 | 
			
		||||
    def configure_form(self, f):
 | 
			
		||||
        super(ExportableInvoiceView, self).configure_form(f)
 | 
			
		||||
        model = self.model
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue