2017-04-20 5 views
1

Ich habe diese Einschränkung erstellen:_constraints kann nicht Erstattung Rechnung Odoo v10 Gemeinschaft

_constraints = [ 
    (_unique_invoice_per_partner, 
    _('The Document you have been entering for this Partner has already' 
     ' been recorded'), 
    ['Control Number (nro_ctrl)', 'Reference (reference)']), 
] 

Es ist zu diesem Gebiet:

nro_ctrl = fields.Char(
    string='Control Number', size=32, readonly=True, required=True, 
    states={'draft': [('readonly', False)]}, 
    help="Number used to manage pre-printed invoices, by law you will" 
     " need to put here this number to be able to declarate on" 
     " Fiscal reports correctly.") 

Diese Einschränkung arbeiten, wenn ich eine Rechnung zu erstellen, validieren, und bezahlen Sie es (dieses Feld ist auf account.invoice Modell).

Aber wenn ich Rückerstattung schaffen, dann heißt es, dass ein Feld nicht richtig eingestellt ist:

The operation cannot be completed, probably due to the following: 
- deletion: you may be trying to delete a record while other records still reference it 
- creation/update: a mandatory field is not correctly set 

[object with reference: nro_ctrl - nro.ctrl] 

Ich habe auch diese Methode, die in der Theorie zu „kopieren“ ermöglichen sollte, oder eine Rechnung duplizieren, mit diesem Feld enthalten:

@api.multi 
def copy(self, default=None): 
    """ Allows you to duplicate a record, 
    child_ids, nro_ctrl and reference fields are 
    cleaned, because they must be unique 
    """ 
    # NOTE: Use argument name ids instead of id for fix the pylint error 
    # W0621 Redefining buil-in 'id' 
    #if default is None: 
     #default = {} 
    default = self._context.copy() #default.copy() 
    default.update({ 
     'nro_ctrl': None, 
     'supplier_invoice_number': None, 
     'sin_cred': False, 
     # No cleaned in this copy because it is related to the previous 
     # document, if previous document says so this too 
     'date_document': False, 
     'invoice_printer': '', 
     'fiscal_printer': '', 
     # No cleaned in this copy because it is related to the previous 
     # document, if previous document says so this too 
     # loc_req':False, 
     'z_report': '', 
    }) 
    return super(AccountInvoice, self).copy(default) 

Dies ist von einer Migration, die ich von v8 zu v10 Gemeinschaft mache.

Ich weiß nicht, ob diese copy Methode sogar notwendig ist.

Wie kann ich eine Rückerstattung mit dieser Einschränkung erstellen? Ich meine, nro_ctrl Feld damit zu nehmen.

Irgendwelche Ideen?

Antwort

2

Sie haben neues Feld erstellen nro_ctrl und Sie haben erforderlich = True in py-Datei schreiben.

Wenn Sie schreiben erforderliches Feld in py Datei dann ist es in Datenbanktabelle erforderlich.

In der Kopiermethode aktualisieren Sie 'nro_ctrl': Keine. Aus diesem Grund erhalten Sie Fehler beim Erstellen, weil kein Wert im erforderlichen Feld erlaubt.

Wenn nro_ctrl Feld in der Rechnung erforderlich ist, dann müssen Sie einen eindeutigen Wert in Kopie Methode der Rückerstattung geben.

+0

Hallo, Vielen Dank, aber ich bin mir nicht sicher, ob ich Ihren Punkt verstehe. Kannst du mir bitte ein Beispiel geben? Meinst du einen nro_ctrl-Wert für dict on copy method? Aber wäre das nicht Fehlzündung? – NeoVe

+0

Sie haben update default.update ({'nro_ctrl': None}), aus diesem Grund erhalten Sie einen Fehler des erforderlichen Feldes. –

+0

Okay, aber was ist der einzigartige Wert, den ich nro_ctrl verwenden sollte: self.nro_ctrl zum Beispiel? Anstelle von nro_ctrl: Keine? – NeoVe

Verwandte Themen