This commit is contained in:
Mohit Panjwani
2022-02-10 11:50:13 +05:30
12 changed files with 88 additions and 52 deletions

View File

@ -92,6 +92,12 @@ class CustomerProfileRequest extends FormRequest
],
'shipping.fax' => [
'nullable',
],
'customer_avatar' => [
'nullable',
'file',
'mimes:gif,jpg,png',
'max:20000'
]
];
}

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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'].'"',
]);
}

View File

@ -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"],
],

View File

@ -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',
@ -575,6 +583,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,
],
];

View File

@ -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:**

View File

@ -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

View File

@ -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°",

View File

@ -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,

View File

@ -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()