From 85836c3f9c748079aebd1e8995e4539497883b66 Mon Sep 17 00:00:00 2001 From: Nikhil <95367581+NickCrater@users.noreply.github.com> Date: Thu, 13 Jan 2022 21:48:16 +0530 Subject: [PATCH 1/9] Update readme.md (#719) --- readme.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/readme.md b/readme.md index 06700132..66a9fd62 100644 --- a/readme.md +++ b/readme.md @@ -54,20 +54,24 @@ Join the Crater discord server to discuss: - [x] Add and Use Custom Fields on Invoices & Estimates. - [x] Multiple Companies - [x] Recurring Invoices -- [ ] Modules +- [x] Customer Portal +- [x] Accept Payments (Stripe Integration) +- [x] White Labeling (Easy Invoice, Email & Consumer Portal Theme customisation) +- [ ] Modules API - [ ] Blockchain Integration - [ ] Web 3.0 Accounting -- [ ] White Labeling (Easy Invoice, Email & Consumer Portal Theme customisation) -- [ ] Vendors, Inventory & Bills +- [ ] Vendors & Bills +- [ ] Inventory Management - [ ] Payment Reminders - [ ] Improve Accessibility -- [ ] Customer Portal -- [ ] Accept Payments (Stripe Integration) - [ ] Debit & Credit Notes +- [ ] Time Tracking +- [ ] Full service Payroll + ## Copyright -© 2021 Crater Invoice, Inc. +© 2022 Crater Invoice, Inc. **Special thanks to:** From dc7282d6e9baa52f596ea5b80b047b474a5ea4da Mon Sep 17 00:00:00 2001 From: stefanstojanov <32755351+stefanstojanov@users.noreply.github.com> Date: Tue, 18 Jan 2022 17:05:18 +0100 Subject: [PATCH 2/9] Added Macedonian Denar currency (#736) * Add Macedonian Denar currency * Typo fix * Swap currency symbol --- database/seeders/CurrenciesTableSeeder.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/database/seeders/CurrenciesTableSeeder.php b/database/seeders/CurrenciesTableSeeder.php index 14aa764a..3dac2786 100644 --- a/database/seeders/CurrenciesTableSeeder.php +++ b/database/seeders/CurrenciesTableSeeder.php @@ -575,6 +575,15 @@ class CurrenciesTableSeeder extends Seeder 'thousand_separator' => ',', 'decimal_separator' => '.', ], + [ + 'name' => 'Macedonian Denar', + 'code' => 'MKD', + 'symbol' => 'ден', + 'precision' => '0', + 'thousand_separator' => '.', + 'decimal_separator' => ',', + 'swap_currency_symbol' => true, + ], ]; From 323b7d8ea630e40d18d1b49a51bb307c87371b9f Mon Sep 17 00:00:00 2001 From: Ayush Jha Date: Tue, 18 Jan 2022 21:57:18 +0545 Subject: [PATCH 3/9] Adds Nepali Rupee as currency (#675) Co-authored-by: Ayush Jha --- database/seeders/CurrenciesTableSeeder.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/database/seeders/CurrenciesTableSeeder.php b/database/seeders/CurrenciesTableSeeder.php index 3dac2786..f123f92f 100644 --- a/database/seeders/CurrenciesTableSeeder.php +++ b/database/seeders/CurrenciesTableSeeder.php @@ -106,6 +106,14 @@ class CurrenciesTableSeeder extends Seeder 'thousand_separator' => ',', 'decimal_separator' => '.', ], + [ + 'name' => 'Nepali Rupee', + 'code' => 'NPR', + 'symbol' => 'रू', + 'precision' => '2', + 'thousand_separator' => ',', + 'decimal_separator' => '.', + ], [ 'name' => 'Indian Rupee', 'code' => 'INR', From ff3cd0f7b9f8265f6a5875d9155fcabf7844c28b Mon Sep 17 00:00:00 2001 From: theWorstComrade <59704962+theWorstComrade@users.noreply.github.com> Date: Wed, 19 Jan 2022 12:38:34 +0100 Subject: [PATCH 4/9] Customer avatar validation (#732) * Customer avatar validation https://huntr.dev/bounties/19f3e5f7-b419-44b1-9c37-7e4404cbec94/ * Customer avatar validation test https://huntr.dev/bounties/19f3e5f7-b419-44b1-9c37-7e4404cbec94/ --- app/Http/Requests/Customer/CustomerProfileRequest.php | 6 ++++++ tests/Unit/Request/Customer/CustomerProfileTest.php | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/app/Http/Requests/Customer/CustomerProfileRequest.php b/app/Http/Requests/Customer/CustomerProfileRequest.php index 66d72e7d..efaa3a5c 100644 --- a/app/Http/Requests/Customer/CustomerProfileRequest.php +++ b/app/Http/Requests/Customer/CustomerProfileRequest.php @@ -92,6 +92,12 @@ class CustomerProfileRequest extends FormRequest ], 'shipping.fax' => [ 'nullable', + ], + 'customer_avatar' => [ + 'nullable', + 'file', + 'mimes:gif,jpg,png', + 'max:20000' ] ]; } diff --git a/tests/Unit/Request/Customer/CustomerProfileTest.php b/tests/Unit/Request/Customer/CustomerProfileTest.php index f3bc46e6..1fa70a26 100644 --- a/tests/Unit/Request/Customer/CustomerProfileTest.php +++ b/tests/Unit/Request/Customer/CustomerProfileTest.php @@ -73,6 +73,12 @@ test('customer profile request validation rules', function () { ], 'shipping.fax' => [ 'nullable', + ], + 'customer_avatar' => [ + 'nullable', + 'file', + 'mimes:gif,jpg,png', + 'max:20000' ] ], $request->rules() From ab863a8d88c95234fb09e79902e73a85942370f6 Mon Sep 17 00:00:00 2001 From: DejfCold Date: Thu, 27 Jan 2022 12:53:37 +0100 Subject: [PATCH 5/9] Added Czech language (#702) --- config/crater.php | 1 + resources/scripts/locales/locales.js | 2 ++ 2 files changed, 3 insertions(+) diff --git a/config/crater.php b/config/crater.php index 75373f9c..caaff1c1 100644 --- a/config/crater.php +++ b/config/crater.php @@ -68,6 +68,7 @@ return [ ["code" => "sv", "name" => "Svenska"], ["code" => "sk", "name" => "Slovak"], ["code" => "vi", "name" => "Tiếng Việt"], + ["code" => "cs", "name" => "Czech"], ["code" => "el", "name" => "Greek"], ["code" => "hr", "name" => "Crotian"], ], diff --git a/resources/scripts/locales/locales.js b/resources/scripts/locales/locales.js index b51a3a8f..588ebe7c 100644 --- a/resources/scripts/locales/locales.js +++ b/resources/scripts/locales/locales.js @@ -1,3 +1,4 @@ +import cs from './cs.json' import en from './en.json' import fr from './fr.json' import es from './es.json' @@ -18,6 +19,7 @@ import el from './el.json' import hr from './hr.json' export default { + cs, en, fr, es, From 6a34708a37d98692bf9c8335cd35420db45b98f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matton=20S=C3=A9bastien?= <4431263+sebmatton@users.noreply.github.com> Date: Thu, 27 Jan 2022 12:54:03 +0100 Subject: [PATCH 6/9] Update french translation (#723) Missing translations --- resources/scripts/locales/fr.json | 82 +++++++++++++++---------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/resources/scripts/locales/fr.json b/resources/scripts/locales/fr.json index 46c7169c..8d604b77 100644 --- a/resources/scripts/locales/fr.json +++ b/resources/scripts/locales/fr.json @@ -85,21 +85,21 @@ "select_state": "Sélectionnez l'état", "select_country": "Choisissez le pays", "select_city": "Sélectionnez une ville", - "street_1": "Rue 1", - "street_2": "Rue # 2", + "street_1": "Rue, voie, boite postale", + "street_2": "Bâtiment, étage, lieu-dit, complément,...", "action_failed": "Action : échoué", "retry": "Réessayez", "choose_note": "Choisissez une note de bas de page", "no_note_found": "Aucune note de bas de page trouvée", "insert_note": "Insérer une note", "copied_pdf_url_clipboard": "L'adresse du PDF a été copiée.", - "copied_url_clipboard": "Copied url to clipboard!", + "copied_url_clipboard": "URL copiée vers le presse-papier!", "docs": "Documents", "do_you_wish_to_continue": "Voulez-vous continuer ?", "note": "Note de bas de page", - "pay_invoice": "Pay Invoice", - "login_successfully": "Logged in successfully!", - "logged_out_successfully": "Logged out successfully" + "pay_invoice": "Payer facture", + "login_successfully": "Identifié avec succès!", + "logged_out_successfully": "Déconnecté avec succès" }, "dashboard": { "select_year": "Sélectionnez l'année", @@ -141,7 +141,7 @@ "name": "Nom", "description": "Description", "percent": "Pourcentage", - "compound_tax": "Taxe empilée" + "compound_tax": "Taxe composée" }, "global_search": { "search": "Rechercher", @@ -207,10 +207,10 @@ "new_customer": "Nouveau client", "edit_customer": "Modifier le client", "basic_info": "Informations de base", - "portal_access": "Portal Access", - "portal_access_text": "Would you like to allow this customer to login to the Customer Portal?", - "portal_access_url": "Customer Portal Login URL", - "portal_access_url_help": "Please copy & forward the above given URL to your customer for providing access.", + "portal_access": "Accès Portail", + "portal_access_text": "Souhaitez vous autoriser ce client à se connecter au Portail Client ?", + "portal_access_url": "URL de connexion Portail Client", + "portal_access_url_help": "Veuillez copiez et envoyez le lien ci-dessus au client pour lui fournir l'accès au portail.", "billing_address": "Adresse de facturation", "shipping_address": "Adresse de livraison", "copy_billing_address": "Copier depuis l'adresse de facturation", @@ -230,7 +230,7 @@ "confirm_delete": "Vous ne pourrez pas récupérer ce client et les devis, factures et paiements associés. | Vous ne serez pas en mesure de récupérer ces clients et les devis, factures et paiements associés.", "created_message": "Client créé", "updated_message": "Client mis à jour", - "address_updated_message": "Address Information Updated succesfully", + "address_updated_message": "Adresse mise à jour avec succès", "deleted_message": "Client supprimé | Clients supprimés", "edit_currency_not_allowed": "Impossible de changer de devise une fois les transactions créées." }, @@ -264,8 +264,8 @@ }, "estimates": { "title": "Devis", - "accept_estimate": "Accept Estimate", - "reject_estimate": "Reject Estimate", + "accept_estimate": "Accepter devis", + "reject_estimate": "Rejeter devis", "estimate": "Devis | Devis", "estimates_list": "Liste des devis", "days": "{days} jours", @@ -357,10 +357,10 @@ }, "invoices": { "title": "Factures", - "download": "Download", - "pay_invoice": "Pay Invoice", + "download": "Télécharger", + "pay_invoice": "Payer facture", "invoices_list": "Liste des factures", - "invoice_information": "Invoice Information", + "invoice_information": "Informations sur la facture", "days": "{days} jours", "months": "{months} mois", "years": "{years} années", @@ -806,7 +806,7 @@ "address_information": "Address Information" }, "address_information": { - "section_description": " You can update Your Address information using form below." + "section_description": " Vous pouvez mettre à jour vos informations d'adresse via le formulaire ci dessous." }, "title": "Paramètres", "setting": "Paramètres | Paramètres", @@ -1173,8 +1173,8 @@ "discount_setting": "Réglage de remise", "discount_per_item": "Remise par article", "discount_setting_description": "Activez cette option si vous souhaitez détailler les remises par article. Par défaut, les remises sont ajoutées au sous-total.", - "expire_public_links": "Automatically Expire Public Links", - "expire_setting_description": "Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.", + "expire_public_links": "Expiration automatique des liens publics", + "expire_setting_description": "Spécifiez si vous souhaitez faire expirer tous les liens publiques envoyés par l'application pour consulter les factures, devis, paiements,... après une durée spécifique.", "save": "Enregistrer", "preference": "Préférence | Préférences", "general_settings": "Modifiez ici les paramètres globaux de Crater.", @@ -1296,16 +1296,16 @@ "invalid_disk_credentials": "Informations d'identification non valides du stockage sélectionné" }, "taxations": { - "add_billing_address": "Enter Billing Address", - "add_shipping_address": "Enter Shipping Address", - "add_company_address": "Enter Company Address", - "modal_description": "The information below is required in order to fetch sales tax.", - "add_address": "Add Address for fetching sales tax.", - "address_placeholder": "Example: 123, My Street", - "city_placeholder": "Example: Los Angeles", - "state_placeholder": "Example: CA", - "zip_placeholder": "Example: 90024", - "invalid_address": "Please provide valid address details." + "add_billing_address": "Entrez l'adresse de facturation", + "add_shipping_address": "Entrez l'adresse de livraison", + "add_company_address": "Entrez l'adresse de la société", + "modal_description": "Les informations ci-dessous sont requises afin de récupérer les taxes de vente.", + "add_address": "Ajoutez une adresse pour récupérer les taxes de vente.", + "address_placeholder": "Exemple: 123, My Street", + "city_placeholder": "Exemple: Los Angeles", + "state_placeholder": "Exemple: CA", + "zip_placeholder": "Exemple: 90024", + "invalid_address": "Veuillez fournir une adresse valide." } }, "wizard": { @@ -1465,17 +1465,17 @@ "not_allowed": "Non autorisé", "login_invalid_credentials": "Ces identifiants ne correspondent pas à nos enregistrements.", "enter_valid_cron_format": "Veuillez entrer une tâche Cron valide", - "email_could_not_be_sent": "Email could not be sent to this email address.", - "invalid_address": "Please enter a valid address.", - "invalid_key": "Please enter valid key.", - "invalid_state": "Please enter a valid state.", - "invalid_city": "Please enter a valid city.", - "invalid_postal_code": "Please enter a valid zip.", - "invalid_format": "Please enter valid query string format.", - "api_error": "Server not responding.", - "feature_not_enabled": "Feature not enabled.", - "request_limit_met": "Api request limit exceeded.", - "address_incomplete": "Incomplete Address" + "email_could_not_be_sent": "L'Email n'a pas pu être envoyé vers cette adresse email.", + "invalid_address": "Veuillez spécifier une adresse valide.", + "invalid_key": "Veuillez spécifier une clé valide.", + "invalid_state": "Veuillez spécifier un état valide.", + "invalid_city": "Veuillez spécifier une ville valide.", + "invalid_postal_code": "Veuillez spécifier un code postal valide.", + "invalid_format": "Veuillez spécifier un format de requête valide.", + "api_error": "Le serveur ne répond plus.", + "feature_not_enabled": "Fonctionnalité inactive.", + "request_limit_met": "Limite de requêtes API dépassée.", + "address_incomplete": "Adresse incomplète" }, "pdf_estimate_label": "Devis", "pdf_estimate_number": "N°", From 760f4566aac04c6ad6fdda4a176695510e78cf30 Mon Sep 17 00:00:00 2001 From: Noah Schneider Date: Fri, 28 Jan 2022 19:37:26 +0100 Subject: [PATCH 7/9] Customer view field resolve fix (#757) * fixed customer view field resolve * fixed customer view field resolve estimate payment --- app/Http/Resources/Customer/InvoiceResource.php | 2 +- app/Http/Resources/EstimateResource.php | 2 +- app/Http/Resources/PaymentResource.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Http/Resources/Customer/InvoiceResource.php b/app/Http/Resources/Customer/InvoiceResource.php index 3e4637b4..228349a0 100644 --- a/app/Http/Resources/Customer/InvoiceResource.php +++ b/app/Http/Resources/Customer/InvoiceResource.php @@ -24,7 +24,7 @@ class InvoiceResource extends JsonResource 'paid_status' => $this->paid_status, 'tax_per_item' => $this->tax_per_item, 'discount_per_item' => $this->discount_per_item, - 'notes' => $this->notes, + 'notes' => $this->getNotes(), 'discount_type' => $this->discount_type, 'discount' => $this->discount, 'discount_val' => $this->discount_val, diff --git a/app/Http/Resources/EstimateResource.php b/app/Http/Resources/EstimateResource.php index e7284bd7..46b69ea3 100644 --- a/app/Http/Resources/EstimateResource.php +++ b/app/Http/Resources/EstimateResource.php @@ -23,7 +23,7 @@ class EstimateResource extends JsonResource 'reference_number' => $this->reference_number, 'tax_per_item' => $this->tax_per_item, 'discount_per_item' => $this->discount_per_item, - 'notes' => $this->notes, + 'notes' => $this->getNotes(), 'discount' => $this->discount, 'discount_type' => $this->discount_type, 'discount_val' => $this->discount_val, diff --git a/app/Http/Resources/PaymentResource.php b/app/Http/Resources/PaymentResource.php index 7350a912..0ac625f8 100644 --- a/app/Http/Resources/PaymentResource.php +++ b/app/Http/Resources/PaymentResource.php @@ -18,7 +18,7 @@ class PaymentResource extends JsonResource 'id' => $this->id, 'payment_number' => $this->payment_number, 'payment_date' => $this->payment_date, - 'notes' => $this->notes, + 'notes' => $this->getNotes(), 'amount' => $this->amount, 'unique_hash' => $this->unique_hash, 'invoice_id' => $this->invoice_id, From 5f53138dc55e78394cfa6ec6ad83595afdb75a71 Mon Sep 17 00:00:00 2001 From: David Wheatley Date: Fri, 4 Feb 2022 13:48:14 +0100 Subject: [PATCH 8/9] fix: Poppins semi-bold font 404 error (#771) --- resources/sass/crater.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/sass/crater.scss b/resources/sass/crater.scss index 5b788b4d..df8354e1 100644 --- a/resources/sass/crater.scss +++ b/resources/sass/crater.scss @@ -41,7 +41,7 @@ font-style: normal; font-weight: 600; font-display: swap; - src: url("/fonts/Poppins-Semibold.ttf") format("truetype"); + src: url("/fonts/Poppins-SemiBold.ttf") format("truetype"); } // Default Theme From 9448677dadaa79cccc9af0afbd9a6b429b7f7835 Mon Sep 17 00:00:00 2001 From: Rm Yakovenko Date: Tue, 8 Feb 2022 04:10:14 +0200 Subject: [PATCH 9/9] #773 PDF download naming (#778) --- app/Traits/GeneratesPdfTrait.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Traits/GeneratesPdfTrait.php b/app/Traits/GeneratesPdfTrait.php index 393b51d2..6d26829c 100644 --- a/app/Traits/GeneratesPdfTrait.php +++ b/app/Traits/GeneratesPdfTrait.php @@ -16,7 +16,7 @@ trait GeneratesPdfTrait if ($pdf && file_exists($pdf['path'])) { return response()->make(file_get_contents($pdf['path']), 200, [ 'Content-Type' => 'application/pdf', - 'Content-Disposition' => 'inline; filename="'.$pdf['file_name'].'.pdf"', + 'Content-Disposition' => 'inline; filename="'.$pdf['file_name'].'"', ]); }