/**
  * Updates or inserts an invoice
  * @param Service $service
  * @return self
  * @throws NotValidException
  */
 public function save(Service $service)
 {
     if (!$this->validate()) {
         throw new NotValidException('Unable to validate invoice');
     }
     return $this->reload($service->save($this));
 }
 /**
  * Updates or inserts a contact
  * @param Service $service
  * @return self
  * @throws NotValidException
  */
 public function save(Service $service)
 {
     if (!$this->sepaActive) {
         $valid = $this->validate();
     } else {
         $oldRequired = $this->_requiredAttr;
         $this->_requiredAttr[] = 'sepaIban';
         $this->_requiredAttr[] = 'sepaIbanAccountName';
         $this->_requiredAttr[] = 'sepaBic';
         $this->_requiredAttr[] = 'sepaMandateId';
         $this->_requiredAttr[] = 'sepaMandateDate';
         $this->_requiredAttr[] = 'sepaSequenceType';
         $valid = $this->validate();
         $this->_requiredAttr = $oldRequired;
     }
     if (!$valid) {
         throw new NotValidException('Unable to validate contact');
     }
     return $this->reload($service->save($this));
 }