From 7f3f166a81df3b1bd7a9f501f0c27fd768958af0 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Thu, 14 Feb 2019 00:44:40 +0100 Subject: [PATCH] NEW link/delete contact in invoice object --- .../facture/class/api_invoices.class.php | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/htdocs/compta/facture/class/api_invoices.class.php b/htdocs/compta/facture/class/api_invoices.class.php index ec098bca224..af3626942de 100644 --- a/htdocs/compta/facture/class/api_invoices.class.php +++ b/htdocs/compta/facture/class/api_invoices.class.php @@ -372,6 +372,86 @@ class Invoices extends DolibarrApi throw new RestException(304, $this->invoice->error); } } + + /** + * Add a contact type of given invoice + * + * @param int $id Id of invoice to update + * @param int $contactid Id of contact to add + * @param string $type Type of the contact (BILLING, SHIPPING, CUSTOMER) + * + * @url POST {id}/contact/{contactid}/{type} + * + * @return int + * @throws 401 + * @throws 404 + */ + function postContact($id, $contactid, $type) + { + if(!DolibarrApiAccess::$user->rights->facture->creer) { + throw new RestException(401); + } + + $result = $this->facture->fetch($id); + + if(!$result) { + throw new RestException(404, 'Invoice not found'); + } + + if (!in_array($type, array('BILLING', 'SHIPPING', 'CUSTOMER'), true)) { + throw new RestException(500, 'Availables types: BILLING, SHIPPING OR CUSTOMER'); + } + + if(!DolibarrApi::_checkAccessToResource('invoice', $this->facture->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + $result = $this->facture->add_contact($contactid, $type, 'external'); + + if (!$result) { + throw new RestException(500, 'Error when added the contact'); + } + + return $this->facture; + } + + /** + * Delete a contact type of given invoice + * + * @param int $id Id of invoice to update + * @param int $rowid Row key of the contact in the array contact_ids. + * + * @url DELETE {id}/contact/{rowid} + * + * @return int + * @throws 401 + * @throws 404 + * @throws 500 + */ + function deleteContact($id, $rowid) + { + if(!DolibarrApiAccess::$user->rights->facture->creer) { + throw new RestException(401); + } + + $result = $this->facture->fetch($id); + + if(!$result) { + throw new RestException(404, 'Invoice not found'); + } + + if(!DolibarrApi::_checkAccessToResource('invoice', $this->facture->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + $result = $this->facture->delete_contact($rowid); + + if (!$result) { + throw new RestException(500, 'Error when deleted the contact'); + } + + return $this->facture; + } /** * Deletes a line of a given invoice