diff --git a/app/Factory/WebhookFactory.php b/app/Factory/WebhookFactory.php index 045ed87cb2..bced2b3216 100644 --- a/app/Factory/WebhookFactory.php +++ b/app/Factory/WebhookFactory.php @@ -23,7 +23,9 @@ class WebhookFactory $webhook->target_url = ''; $webhook->event_id = 1; $webhook->format = 'JSON'; - + $webhook->rest_method = 'post'; + $webhook->headers = []; + return $webhook; } } diff --git a/app/Http/Requests/Subscription/StoreSubscriptionRequest.php b/app/Http/Requests/Subscription/StoreSubscriptionRequest.php index 84bdc274b6..7e9622f30c 100644 --- a/app/Http/Requests/Subscription/StoreSubscriptionRequest.php +++ b/app/Http/Requests/Subscription/StoreSubscriptionRequest.php @@ -34,7 +34,7 @@ class StoreSubscriptionRequest extends Request */ public function rules() { - return [ + $rules = [ 'product_id' => ['sometimes'], 'assigned_user_id' => ['sometimes'], 'is_recurring' => ['sometimes'], @@ -55,12 +55,17 @@ class StoreSubscriptionRequest extends Request 'webhook_configuration' => ['array'], 'name' => ['required', Rule::unique('subscriptions')->where('company_id', auth()->user()->company()->id)] ]; + + return $this->globalRules($rules); + } protected function prepareForValidation() { $input = $this->all(); + $input = $this->decodePrimaryKeys($input); + $this->replace($input); } } diff --git a/app/Http/Requests/Subscription/UpdateSubscriptionRequest.php b/app/Http/Requests/Subscription/UpdateSubscriptionRequest.php index 4b7a0c4bbe..bd5e45aebe 100644 --- a/app/Http/Requests/Subscription/UpdateSubscriptionRequest.php +++ b/app/Http/Requests/Subscription/UpdateSubscriptionRequest.php @@ -35,8 +35,20 @@ class UpdateSubscriptionRequest extends Request */ public function rules() { - return [ + $rules = [ // ]; + + return $this->globalRules($rules); + + } + + protected function prepareForValidation() + { + $input = $this->all(); + + $input = $this->decodePrimaryKeys($input); + + $this->replace($input); } } diff --git a/app/Jobs/Product/UpdateOrCreateProduct.php b/app/Jobs/Product/UpdateOrCreateProduct.php index 1561597919..b5149e6b84 100644 --- a/app/Jobs/Product/UpdateOrCreateProduct.php +++ b/app/Jobs/Product/UpdateOrCreateProduct.php @@ -55,6 +55,9 @@ class UpdateOrCreateProduct implements ShouldQueue { MultiDB::setDB($this->company->db); + if(strval($this->invoice->client->getSetting('currency_id')) != strval($this->company->settings->currency_id)) + return; + /* * If the invoice was generated from a Task or Expense then * we do NOT update the product details this short block we diff --git a/app/Jobs/Util/Import.php b/app/Jobs/Util/Import.php index 6a06eac444..09ddb6b159 100644 --- a/app/Jobs/Util/Import.php +++ b/app/Jobs/Util/Import.php @@ -227,6 +227,8 @@ class Import implements ShouldQueue CompanySizeCheck::dispatch(); info('CompletedπŸš€πŸš€πŸš€πŸš€πŸš€ at '.now()); + + unlink($this->file_path); } private function setInitialCompanyLedgerBalances() diff --git a/app/Listeners/Invoice/InvoiceArchivedActivity.php b/app/Listeners/Invoice/InvoiceArchivedActivity.php index 7fd3672b88..cbb1759047 100644 --- a/app/Listeners/Invoice/InvoiceArchivedActivity.php +++ b/app/Listeners/Invoice/InvoiceArchivedActivity.php @@ -41,6 +41,8 @@ class InvoiceArchivedActivity implements ShouldQueue { MultiDB::setDb($event->company->db); + $event->invoice->service()->deletePdf(); + $fields = new stdClass; $fields->invoice_id = $event->invoice->id; diff --git a/app/Models/Webhook.php b/app/Models/Webhook.php index 8684fd7574..1372bf03e9 100644 --- a/app/Models/Webhook.php +++ b/app/Models/Webhook.php @@ -57,6 +57,15 @@ class Webhook extends BaseModel 'target_url', 'format', 'event_id', + 'rest_method', + 'headers', + ]; + + protected $casts = [ + 'headers' => 'array', + 'updated_at' => 'timestamp', + 'created_at' => 'timestamp', + 'deleted_at' => 'timestamp', ]; public function user() diff --git a/app/Services/Payment/UpdateInvoicePayment.php b/app/Services/Payment/UpdateInvoicePayment.php index d2fc2eefed..0af4a1e431 100644 --- a/app/Services/Payment/UpdateInvoicePayment.php +++ b/app/Services/Payment/UpdateInvoicePayment.php @@ -82,6 +82,7 @@ class UpdateInvoicePayment ->updateBalance($paid_amount * -1) ->updatePaidToDate($paid_amount) ->updateStatus() + ->deletePdf() ->save(); InvoiceWorkflowSettings::dispatchNow($invoice); diff --git a/app/Transformers/WebhookTransformer.php b/app/Transformers/WebhookTransformer.php index 8c4f62884c..b676866002 100644 --- a/app/Transformers/WebhookTransformer.php +++ b/app/Transformers/WebhookTransformer.php @@ -34,6 +34,8 @@ class WebhookTransformer extends EntityTransformer 'target_url' => $webhook->target_url ? (string) $webhook->target_url : '', 'event_id' => (string) $webhook->event_id, 'format' => (string) $webhook->format, + 'rest_method' => (string) $webhook->rest_method ?: '', + 'headers' => $webhook->headers ?: [], ]; } } diff --git a/database/migrations/2021_04_05_213802_add_rest_fields_to_webhooks_table.php b/database/migrations/2021_04_05_213802_add_rest_fields_to_webhooks_table.php new file mode 100644 index 0000000000..ca43f4c01a --- /dev/null +++ b/database/migrations/2021_04_05_213802_add_rest_fields_to_webhooks_table.php @@ -0,0 +1,33 @@ +text('rest_method')->nullable(); + $table->text('headers')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('webhooks', function (Blueprint $table) { + // + }); + } +} diff --git a/tests/Unit/CompanySettingsTest.php b/tests/Unit/CompanySettingsTest.php index fca71d3970..de748e2f28 100644 --- a/tests/Unit/CompanySettingsTest.php +++ b/tests/Unit/CompanySettingsTest.php @@ -55,4 +55,36 @@ class CompanySettingsTest extends TestCase $this->assertEquals(1, count($diff)); } + + public function testStringEquivalence() + { + + $value = (strval(4) != strval(3)); + + $this->assertTrue($value); + + $value = (strval(4) != strval(4)); + + $this->assertFalse($value); + + $value = (strval('4') != strval(4)); + $this->assertFalse($value); + + $value = (strval('4') != strval('4')); + + $this->assertFalse($value); + + $value = (strval('4') != strval(3)); + + $this->assertTrue($value); + + $value = (strval(4) != strval('3')); + + $this->assertTrue($value); + + $value = (strval('4') != strval('3')); + + $this->assertTrue($value); + + } }