feat: Added Localization generation

This commit is contained in:
IceToast 2021-12-22 14:31:09 +01:00
parent 5ed46a1640
commit f10933104c
6 changed files with 973 additions and 859 deletions

View file

@ -16,6 +16,7 @@
"fruitcake/laravel-cors": "^2.0", "fruitcake/laravel-cors": "^2.0",
"guzzlehttp/guzzle": "^7.0.1", "guzzlehttp/guzzle": "^7.0.1",
"hidehalo/nanoid-php": "^1.1", "hidehalo/nanoid-php": "^1.1",
"kkomelin/laravel-translatable-string-exporter": "^1.14",
"laravel/framework": "^8.12", "laravel/framework": "^8.12",
"laravel/tinker": "^2.5", "laravel/tinker": "^2.5",
"laravel/ui": "^3.2", "laravel/ui": "^3.2",

63
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "51c5797dc1629fe1f42b1fdc91c6e5d8", "content-hash": "ed0357bbf827f4e6078d2ed41ce3fa17",
"packages": [ "packages": [
{ {
"name": "asm89/stack-cors", "name": "asm89/stack-cors",
@ -1533,6 +1533,67 @@
}, },
"time": "2020-12-11T09:24:45+00:00" "time": "2020-12-11T09:24:45+00:00"
}, },
{
"name": "kkomelin/laravel-translatable-string-exporter",
"version": "1.14.0",
"source": {
"type": "git",
"url": "https://github.com/kkomelin/laravel-translatable-string-exporter.git",
"reference": "9dce1e5f8ed59a1b58e77ec7d84f1427d5e29f0a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/kkomelin/laravel-translatable-string-exporter/zipball/9dce1e5f8ed59a1b58e77ec7d84f1427d5e29f0a",
"reference": "9dce1e5f8ed59a1b58e77ec7d84f1427d5e29f0a",
"shasum": ""
},
"require": {
"ext-json": "*",
"illuminate/support": "^5.4|^6|^7|^8",
"illuminate/translation": "^5.4|^6|^7|^8",
"php": ">=5.4.0",
"symfony/finder": "^3.2|^4|^5"
},
"require-dev": {
"orchestra/testbench": "^3.4|^4.0|^5.0|^6.0"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"KKomelin\\TranslatableStringExporter\\Providers\\ExporterServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"KKomelin\\TranslatableStringExporter\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Konstantin Komelin",
"email": "konstantin.komelin@gmail.com"
}
],
"description": "Translatable String Exporter for Laravel",
"keywords": [
"export",
"exporter",
"json",
"laravel",
"translations"
],
"support": {
"issues": "https://github.com/kkomelin/laravel-translatable-string-exporter/issues",
"source": "https://github.com/kkomelin/laravel-translatable-string-exporter/tree/1.14.0"
},
"time": "2021-08-08T06:48:21+00:00"
},
{ {
"name": "laravel/framework", "name": "laravel/framework",
"version": "v8.45.1", "version": "v8.45.1",

View file

@ -193,6 +193,9 @@ return [
App\Providers\RouteServiceProvider::class, App\Providers\RouteServiceProvider::class,
Yajra\DataTables\DataTablesServiceProvider::class, Yajra\DataTables\DataTablesServiceProvider::class,
KKomelin\TranslatableStringExporter\Providers\ExporterServiceProvider::class,
], ],
/* /*

View file

@ -1,33 +1,106 @@
{ {
"api key created!": "api key created!",
"api key updated!": "api key updated!",
"api key has been removed!": "api key has been removed!",
"Edit": "Edit",
"Delete": "Delete",
"configuration has been updated!": "configuration has been updated!",
"unknown": "unknown",
"Pterodactyl synced": "Pterodactyl synced",
"Invoice": "Invoice",
"Paid": "Paid",
"Your credit balance has been increased!": "Your credit balance has been increased!",
"Payment was Canceled": "Payment was Canceled",
"Store item has been created!": "Store item has been created!",
"Store item has been updated!": "Store item has been updated!",
"Product has been updated!": "Product has been updated!",
"Store item has been removed!": "Store item has been removed!",
"Product has been created!": "Product has been created!",
"Product has been removed!": "Product has been removed!",
"Show": "Show",
"Clone": "Clone",
"Server removed": "Server removed",
"An exception has occurred while trying to remove a resource \"": "An exception has occurred while trying to remove a resource \"",
"Server has been updated!": "Server has been updated!",
"Unsuspend": "Unsuspend",
"Suspend": "Suspend",
"Icons updated!": "Icons updated!",
"link has been created!": "link has been created!",
"link has been updated!": "link has been updated!",
"product has been removed!": "product has been removed!",
"User does not exists on pterodactyl's panel": "User does not exists on pterodactyl's panel",
"user has been removed!": "user has been removed!",
"Notification sent!": "Notification sent!",
"User has been updated!": "User has been updated!",
"Login as User": "Login as User",
"voucher has been created!": "voucher has been created!",
"voucher has been updated!": "voucher has been updated!",
"voucher has been removed!": "voucher has been removed!",
"This voucher has reached the maximum amount of uses": "This voucher has reached the maximum amount of uses",
"This voucher has expired": "This voucher has expired",
"You already redeemed this voucher code": "You already redeemed this voucher code",
"have been added to your balance!": "have been added to your balance!",
"Users": "Users",
"VALID": "VALID",
"days": "days",
"hours": "hours",
"You ran out of Credits": "You ran out of Credits",
"Profile updated": "Profile updated",
"Server limit reached!": "Server limit reached!",
"You are required to verify your email address before you can create a server.": "You are required to verify your email address before you can create a server.",
"You are required to link your discord account before you can create a server.": "You are required to link your discord account before you can create a server.",
"Server created": "Server created",
"No allocations satisfying the requirements for automatic deployment on this node were found.": "No allocations satisfying the requirements for automatic deployment on this node were found.",
"You are required to verify your email address before you can purchase credits.": "You are required to verify your email address before you can purchase credits.",
"You are required to link your discord account before you can purchase Credits": "You are required to link your discord account before you can purchase Credits",
"EXPIRED": "EXPIRED",
"Payment Confirmation": "Payment Confirmation",
"Payment Confirmed!": "Payment Confirmed!",
"Your Payment was successful!": "Your Payment was successful!",
"Hello": "Hello",
"Your payment was processed successfully!": "Your payment was processed successfully!",
"Status": "Status",
"Price": "Price",
"Type": "Type",
"Amount": "Amount",
"Balance": "Balance",
"User ID": "User ID",
"Server Creation Error": "Server Creation Error",
"Your servers have been suspended!": "Your servers have been suspended!",
"To automatically re-enable your server/s, you need to purchase more credits.": "To automatically re-enable your server/s, you need to purchase more credits.",
"Purchase credits": "Purchase credits",
"If you have any questions please let us know.": "If you have any questions please let us know.",
"Regards": "Regards",
"Getting started!": "Getting started!",
"Activity Logs": "Activity Logs", "Activity Logs": "Activity Logs",
"No recent activity from cronjobs": "No recent activity from cronjobs", "No recent activity from cronjobs": "No recent activity from cronjobs",
"Check the docs for it here": "Check the docs for it here",
"Are cronjobs running?": "Are cronjobs running?", "Are cronjobs running?": "Are cronjobs running?",
"Check the docs for it here": "Check the docs for it here",
"Causer": "Causer", "Causer": "Causer",
"Description": "Description", "Description": "Description",
"Created at": "Created at", "Created at": "Created at",
"Application API": "Application API",
"Dashboard": "Dashboard",
"Create": "Create",
"Memo": "Memo",
"Submit": "Submit",
"Create new": "Create new",
"Token": "Token",
"Last used": "Last used",
"Are you sure you wish to delete?": "Are you sure you wish to delete?",
"Edit Configuration": "Edit Configuration", "Edit Configuration": "Edit Configuration",
"Text Field": "Text Field", "Text Field": "Text Field",
"Cancel": "Cancel", "Cancel": "Cancel",
"Close": "Close",
"Save": "Save", "Save": "Save",
"true": "true",
"false": "false",
"Configurations": "Configurations", "Configurations": "Configurations",
"Dashboard": "Dashboard",
"Key": "Key", "Key": "Key",
"Value": "Value", "Value": "Value",
"Type": "Type",
"Admin Overview": "Admin Overview", "Admin Overview": "Admin Overview",
"Support server": "Support server", "Support server": "Support server",
"Documentation": "Documentation", "Documentation": "Documentation",
"Github": "Github", "Github": "Github",
"Support ControlPanel": "Support ControlPanel", "Support ControlPanel": "Support ControlPanel",
"Servers": "Servers", "Servers": "Servers",
"Users": "Users",
"Total": "Total", "Total": "Total",
"Payments": "Payments", "Payments": "Payments",
"Pterodactyl": "Pterodactyl", "Pterodactyl": "Pterodactyl",
@ -35,66 +108,59 @@
"Resources": "Resources", "Resources": "Resources",
"Count": "Count", "Count": "Count",
"Locations": "Locations", "Locations": "Locations",
"Node": "Node",
"Nodes": "Nodes", "Nodes": "Nodes",
"Nests": "Nests", "Nests": "Nests",
"Eggs": "Eggs", "Eggs": "Eggs",
"Last updated :date": "Last updated :date", "Last updated :date": "Last updated :date",
"Purchase": "Purchase",
"ID": "ID", "ID": "ID",
"User": "User", "User": "User",
"Amount": "Amount",
"Product Price": "Product Price", "Product Price": "Product Price",
"Tax": "Tax", "Tax": "Tax",
"Total Price": "Total Price", "Total Price": "Total Price",
"Payment_ID": "Payment_ID", "Payment_ID": "Payment_ID",
"Payer_ID": "Payer_ID", "Payer_ID": "Payer_ID",
"Product": "Product",
"Products": "Products", "Products": "Products",
"Create": "Create",
"Product Details": "Product Details", "Product Details": "Product Details",
"Server Details": "Server Details", "Disabled": "Disabled",
"Will hide this option from being selected": "Will hide this option from being selected",
"Product Linking": "Product Linking",
"Name": "Name", "Name": "Name",
"Price in": "Price in", "Price in": "Price in",
"Memory": "Memory", "Memory": "Memory",
"Cpu": "Cpu", "Cpu": "Cpu",
"Swap": "Swap", "Swap": "Swap",
"This is what the users sees": "This is what the users sees",
"Disk": "Disk", "Disk": "Disk",
"Minimum": "Minimum", "Minimum": "Minimum",
"Setting to -1 will use the value from configuration.": "Setting to -1 will use the value from configuration.",
"IO": "IO", "IO": "IO",
"Databases": "Databases", "Databases": "Databases",
"Database": "Database",
"Backups": "Backups", "Backups": "Backups",
"Allocations": "Allocations", "Allocations": "Allocations",
"Disabled": "Disabled", "Product Linking": "Product Linking",
"Submit": "Submit", "Link your products to nodes and eggs to create dynamic pricing for each option": "Link your products to nodes and eggs to create dynamic pricing for each option",
"This product will only be available for these nodes": "This product will only be available for these nodes", "This product will only be available for these nodes": "This product will only be available for these nodes",
"This product will only be available for these eggs": "This product will only be available for these eggs", "This product will only be available for these eggs": "This product will only be available for these eggs",
"Will hide this option from being selected": "Will hide this option from being selected", "Active": "Active",
"Link your products to nodes and eggs to create dynamic pricing for each option": "Link your products to nodes and eggs to create dynamic pricing for each option", "Product": "Product",
"Setting to -1 will use the value from configuration.": "Setting to -1 will use the value from configuration.", "CPU": "CPU",
"This is what the users sees": "This is what the users sees",
"Edit": "Edit",
"Price": "Price",
"Are you sure you wish to delete?": "Are you sure you wish to delete?",
"Create new": "Create new",
"Show": "Show",
"Updated at": "Updated at", "Updated at": "Updated at",
"Config": "Config",
"Suspended at": "Suspended at", "Suspended at": "Suspended at",
"Settings": "Settings", "Settings": "Settings",
"Dashboard icons": "Dashboard icons", "Dashboard icons": "Dashboard icons",
"Invoice Settings": "Invoice Settings",
"Select panel icon": "Select panel icon", "Select panel icon": "Select panel icon",
"Select panel favicon": "Select panel favicon", "Select panel favicon": "Select panel favicon",
"Download all Invoices": "Download all Invoices",
"Token": "Token", "Enter your companys name": "Enter your companys name",
"Last used": "Last used", "Enter your companys address": "Enter your companys address",
"Enter your companys phone number": "Enter your companys phone number",
"Enter your companys VAT id": "Enter your companys VAT id",
"Enter your companys email address": "Enter your companys email address",
"Enter your companys website": "Enter your companys website",
"Enter your custom invoice prefix": "Enter your custom invoice prefix",
"Logo": "Logo",
"Select Invoice Logo": "Select Invoice Logo",
"Store": "Store", "Store": "Store",
"Currency code": "Currency code", "Currency code": "Currency code",
"Checkout the paypal docs to select the appropriate code": "Checkout the paypal docs to select the appropriate code", "Checkout the paypal docs to select the appropriate code": "Checkout the paypal docs to select the appropriate code",
@ -102,110 +168,98 @@
"Amount given to the user after purchasing": "Amount given to the user after purchasing", "Amount given to the user after purchasing": "Amount given to the user after purchasing",
"Display": "Display", "Display": "Display",
"This is what the user sees at store and checkout": "This is what the user sees at store and checkout", "This is what the user sees at store and checkout": "This is what the user sees at store and checkout",
"This is what the user sees at checkout": "This is what the user sees at checkout",
"Adds 1000 credits to your account": "Adds 1000 credits to your account", "Adds 1000 credits to your account": "Adds 1000 credits to your account",
"This is what the user sees at checkout": "This is what the user sees at checkout",
"Active": "Active",
"Paypal is not configured.": "Paypal is not configured.", "Paypal is not configured.": "Paypal is not configured.",
"To configure PayPal, head to the .env and add your PayPals client id and secret.": "To configure PayPal, head to the .env and add your PayPals client id and secret.", "To configure PayPal, head to the .env and add your PayPals client id and secret.": "To configure PayPal, head to the .env and add your PayPals client id and secret.",
"Useful Links": "Useful Links", "Useful Links": "Useful Links",
"Icon class name": "Icon class name", "Icon class name": "Icon class name",
"You can find available free icons": "You can find available free icons", "You can find available free icons": "You can find available free icons",
"Title": "Title", "Title": "Title",
"Link": "Link", "Link": "Link",
"description": "description",
"Icon": "Icon",
"Username": "Username", "Username": "Username",
"Email": "Email", "Email": "Email",
"Pterodactly ID": "Pterodactly ID", "Pterodactyl ID": "Pterodactyl ID",
"This ID refers to the user account created on pterodactyls panel.": "This ID refers to the user account created on pterodactyls panel.",
"Only edit this if you know what youre doing :)": "Only edit this if you know what youre doing :)",
"Server Limit": "Server Limit", "Server Limit": "Server Limit",
"Role": "Role", "Role": "Role",
"Administrator": "Administrator", " Administrator": " Administrator",
"Client": "Client", "Client": "Client",
"Member": "Member", "Member": "Member",
"New Password": "New Password", "New Password": "New Password",
"Confirm Password": "Confirm Password", "Confirm Password": "Confirm Password",
"This ID refers to the user account created on pterodactyls panel.": "This ID refers to the user account created on pterodactyls panel.", "Notify": "Notify",
"Only edit this if you know what youre doing :)": "Only edit this if you know what youre doing :)", "Avatar": "Avatar",
"Verified": "Verified", "Verified": "Verified",
"Last seen": "Last seen", "Last seen": "Last seen",
"Notify": "Notify", "Notifications": "Notifications",
"All": "All", "All": "All",
"Send via": "Send via", "Send via": "Send via",
"Database": "Database",
"Content": "Content", "Content": "Content",
"Notifications": "Notifications", "Server limit": "Server limit",
"Discord": "Discord",
"Usage": "Usage", "Usage": "Usage",
"IP": "IP",
"Config": "Config",
"Vouchers": "Vouchers", "Vouchers": "Vouchers",
"Voucher details": "Voucher details", "Voucher details": "Voucher details",
"Memo": "Memo", "Summer break voucher": "Summer break voucher",
"Code": "Code", "Code": "Code",
"Uses": "Uses",
"Expires at": "Expires at",
"Max": "Max",
"Random": "Random", "Random": "Random",
"Uses": "Uses",
"Status": "Status", "A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.",
"Max": "Max",
"Expires at": "Expires at",
"Used / Uses": "Used / Uses", "Used / Uses": "Used / Uses",
"Expires": "Expires", "Expires": "Expires",
"Please confirm your password before continuing.": "Please confirm your password before continuing.",
"Password": "Password",
"Forgot Your Password?": "Forgot Your Password?",
"Sign in to start your session": "Sign in to start your session", "Sign in to start your session": "Sign in to start your session",
"Password": "Password",
"Remember Me": "Remember Me", "Remember Me": "Remember Me",
"Sign In": "Sign In", "Sign In": "Sign In",
"Forgot Your Password?": "Forgot Your Password?",
"Register a new membership": "Register a new membership", "Register a new membership": "Register a new membership",
"Please confirm your password before continuing.": "Please confirm your password before continuing.",
"You forgot your password? Here you can easily retrieve a new password.": "You forgot your password? Here you can easily retrieve a new password.", "You forgot your password? Here you can easily retrieve a new password.": "You forgot your password? Here you can easily retrieve a new password.",
"Request new password": "Request new password", "Request new password": "Request new password",
"Login": "Login", "Login": "Login",
"You are only one step a way from your new password, recover your password now.":"You are only one step a way from your new password, recover your password now.", "You are only one step a way from your new password, recover your password now.": "You are only one step a way from your new password, recover your password now.",
"Retype password": "Retype password", "Retype password": "Retype password",
"Change password": "Change password", "Change password": "Change password",
"I already have a membership": "I already have a membership",
"Register": "Register", "Register": "Register",
"I already have a membership": "I already have a membership",
"Verify Your Email Address": "Verify Your Email Address", "Verify Your Email Address": "Verify Your Email Address",
"A fresh verification link has been sent to your email address.": "A fresh verification link has been sent to your email address.", "A fresh verification link has been sent to your email address.": "A fresh verification link has been sent to your email address.",
"Before proceeding, please check your email for a verification link.": "Before proceeding, please check your email for a verification link.", "Before proceeding, please check your email for a verification link.": "Before proceeding, please check your email for a verification link.",
"If you did not receive the email": "If you did not receive the email", "If you did not receive the email": "If you did not receive the email",
"click here to request another": "click here to request another", "click here to request another": "click here to request another",
"per month": "per month",
"Out of Credits in": "Out of Credits in",
"Home": "Home", "Home": "Home",
"Languages": "Languages",
"See all Notifications": "See all Notifications", "See all Notifications": "See all Notifications",
"Redeem code": "Redeem code",
"Profile": "Profile", "Profile": "Profile",
"Log back in": "Log back in", "Log back in": "Log back in",
"Logout": "Logout", "Logout": "Logout",
"Administration": "Administration", "Administration": "Administration",
"Overview": "Overview", "Overview": "Overview",
"Application API": "Application API",
"Management": "Management", "Management": "Management",
"Other": "Other", "Other": "Other",
"Logs": "Logs", "Logs": "Logs",
"Redeem code": "Redeem code", "Warning!": "Warning!",
"You have not yet verified your email address": "You have not yet verified your email address", "You have not yet verified your email address": "You have not yet verified your email address",
"Click here to resend verification email": "Click here to resend verification email", "Click here to resend verification email": "Click here to resend verification email",
"Please contact support If you didnt receive your verification email.": "Please contact support If you didnt receive your verification email.", "Please contact support If you didnt receive your verification email.": "Please contact support If you didnt receive your verification email.",
"Thank you for your purchase!": "Thank you for your purchase!", "Thank you for your purchase!": "Thank you for your purchase!",
"Your payment has been confirmed; Your credit balance has been updated.": "Your payment has been confirmed; Your credit balance has been updated.", "Your payment has been confirmed; Your credit balance has been updated.": "Your payment has been confirmed; Your credit balance has been updated.",
"Payment ID": "Payment ID", "Payment ID": "Payment ID",
"Balance": "Balance",
"User ID": "User ID",
"Thanks": "Thanks", "Thanks": "Thanks",
"Redeem voucher code": "Redeem voucher code", "Redeem voucher code": "Redeem voucher code",
"Close": "Close",
"Redeem": "Redeem", "Redeem": "Redeem",
"All notifications": "All notifications", "All notifications": "All notifications",
"Required Email verification!": "Required Email verification!", "Required Email verification!": "Required Email verification!",
"Required Discord verification!": "Required Discord verification!", "Required Discord verification!": "Required Discord verification!",
"You have not yet verified your discord account": "You have not yet verified your discord account", "You have not yet verified your discord account": "You have not yet verified your discord account",
@ -213,13 +267,14 @@
"Please contact support If you face any issues.": "Please contact support If you face any issues.", "Please contact support If you face any issues.": "Please contact support If you face any issues.",
"Due to system settings you are required to verify your discord account!": "Due to system settings you are required to verify your discord account!", "Due to system settings you are required to verify your discord account!": "Due to system settings you are required to verify your discord account!",
"It looks like this hasnt been set-up correctly! Please contact support.": "It looks like this hasnt been set-up correctly! Please contact support.", "It looks like this hasnt been set-up correctly! Please contact support.": "It looks like this hasnt been set-up correctly! Please contact support.",
"Change Password": "Change Password", "Change Password": "Change Password",
"Current Password": "Current Password", "Current Password": "Current Password",
"Save Changes": "Save Changes", "Link your discord account!": "Link your discord account!",
"Re-Sync Discord": "Re-Sync Discord",
"You are verified!": "You are verified!",
"By verifying your discord account, you receive extra Credits and increased Server amounts": "By verifying your discord account, you receive extra Credits and increased Server amounts", "By verifying your discord account, you receive extra Credits and increased Server amounts": "By verifying your discord account, you receive extra Credits and increased Server amounts",
"Login with Discord": "Login with Discord",
"You are verified!": "You are verified!",
"Re-Sync Discord": "Re-Sync Discord",
"Save Changes": "Save Changes",
"Server configuration": "Server configuration", "Server configuration": "Server configuration",
"Error!": "Error!", "Error!": "Error!",
"Make sure to link your products to nodes and eggs.": "Make sure to link your products to nodes and eggs.", "Make sure to link your products to nodes and eggs.": "Make sure to link your products to nodes and eggs.",
@ -230,142 +285,88 @@
"No eggs have been linked!": "No eggs have been linked!", "No eggs have been linked!": "No eggs have been linked!",
"Software / Games": "Software / Games", "Software / Games": "Software / Games",
"Please select software ...": "Please select software ...", "Please select software ...": "Please select software ...",
"Specification": "Specification", "---": "---",
"No selection": "No selection", "Specification ": "Specification ",
"per month": "per month", "Node": "Node",
"Not enough credits!": "Not enough credits!", "Resource Data:": "Resource Data:",
"Not enough" : "Not enough", "MB": "MB",
"Please select a configuration ...": "Please select a configuration ...", "MySQL": "MySQL",
"No resources found matching current configuration": "No resources found matching current configuration", "ports": "ports",
"No nodes found matching current configuration": "No nodes found matching current configuration", "Not enough": "Not enough",
"Please select a node ...": "Please select a node ...",
"Create server": "Create server", "Create server": "Create server",
"Use your servers on our": "Use your servers on our", "Please select a node ...": "Please select a node ...",
"pterodactyl panel": "pterodactyl panel", "No nodes found matching current configuration": "No nodes found matching current configuration",
"Server limit reached!": "Server limit reached!", "Please select a resource ...": "Please select a resource ...",
"No resources found matching current configuration": "No resources found matching current configuration",
"Please select a configuration ...": "Please select a configuration ...",
"Not enough credits!": "Not enough credits!",
"Create Server": "Create Server", "Create Server": "Create Server",
"Location": "Location",
"Software": "Software",
"Specification": "Specification",
"Resource plan": "Resource plan",
"per Hour": "per Hour",
"per Month": "per Month",
"Manage": "Manage", "Manage": "Manage",
"Delete server": "Delete server", "Are you sure?": "Are you sure?",
"Price per Hour": "Price per Hour", "This is an irreversible action, all files of this server will be removed.": "This is an irreversible action, all files of this server will be removed.",
"Price per Month": "Price per Month", "Yes, delete it!": "Yes, delete it!",
"No, cancel!": "No, cancel!",
"Canceled ...": "Canceled ...",
"Deletion has been canceled.": "Deletion has been canceled.",
"Date": "Date", "Date": "Date",
"To": "To", "To": "To",
"From": "From", "From": "From",
"Pending": "Pending", "Pending": "Pending",
"Subtotal": "Subtotal", "Subtotal": "Subtotal",
"Submit Payment": "Submit Payment",
"Payment Methods": "Payment Methods", "Payment Methods": "Payment Methods",
"By purchasing this product you agree and accept our terms of service": "By purchasing this product you agree and accept our terms of service", "By purchasing this product you agree and accept our terms of service": "By purchasing this product you agree and accept our terms of service",
"Amount due": "Amount due",
"Submit Payment": "Submit Payment",
"Purchase": "Purchase",
"There are no store products!": "There are no store products!", "There are no store products!": "There are no store products!",
"The store is not correctly configured!": "The store is not correctly configured!", "The store is not correctly configured!": "The store is not correctly configured!",
"Out of Credits in": "Out of Credits in",
"days": "days",
"hours": "hours",
"You ran out of Credits": "You ran out of Credits",
"Profile updated": "Profile updated",
"You are required to verify your email address before you can create a server.": "You are required to verify your email address before you can create a server.",
"You are required to link your discord account before you can create a server.": "You are required to link your discord account before you can create a server.",
"No allocations satisfying the requirements for automatic deployment on this node were found.": "No allocations satisfying the requirements for automatic deployment on this node were found.",
"Server removed": "Server removed",
"Server created": "Server created",
"An exception has occurred while trying to remove a resource \"": "An exception has occurred while trying to remove a resource \"",
"You are required to verify your email address before you can purchase credits.": "You are required to verify your email address before you can purchase credits.",
"You are required to link your discord account before you can purchase ": "You are required to link your discord account before you can purchase ",
"Warning!": "Warning!",
"api key created!": "api key created!",
"api key updated!": "api key updated!",
"api key has been removed!": "api key has been removed!",
"configuration has been updated!": "configuration has been updated!",
"Pterodactyl synced": "Pterodactyl synced",
"Your credit balance has been increased!": "Your credit balance has been increased!",
"Payment was Canceled": "Payment was Canceled",
"Store item has been created!": "Store item has been created!",
"Store item has been updated!": "Store item has been updated!",
"Product has been updated!": "Product has been updated!",
"Store item has been removed!": "Store item has been removed!",
"Product has been created!": "Product has been created!",
"Product has been removed!": "Product has been removed!",
"Server has been updated!": "Server has been updated!",
"Icons updated!": "Icons updated!",
"link has been created!": "link has been created!",
"link has been updated!": "link has been updated!",
"user has been removed!": "user has been removed!",
"Notification sent!": "Notification sent!",
"User has been updated!": "User has been updated!",
"User does not exists on pterodactyl's panel": "User does not exists on pterodactyl's panel",
"voucher has been created!": "voucher has been created!",
"voucher has been updated!": "voucher has been updated!",
"voucher has been removed!": "voucher has been removed!",
"This voucher has reached the maximum amount of uses": "This voucher has reached the maximum amount of uses",
"This voucher has expired": "This voucher has expired",
"You already redeemed this voucher code": "You already redeemed this voucher code",
"You can't redeem this voucher because you would exceed the limit of ": "You can't redeem this voucher because you would exceed the limit of ",
"have been added to your balance!": "have been added to your balance!",
"Invoice": "Invoice",
"Serial No.": "Serial No.", "Serial No.": "Serial No.",
"Invoice date": "Invoice date", "Invoice date": "Invoice date",
"Seller": "Seller", "Seller": "Seller",
"Buyer": "Buyer", "Buyer": "Buyer",
"Address": "Address", "Address": "Address",
"VAT code": "VAT code", "VAT Code": "VAT Code",
"Phone": "Phone", "Phone": "Phone",
"Units": "Units", "Units": "Units",
"Qty": "Qty",
"Discount": "Discount", "Discount": "Discount",
"Sub total": "Sub total",
"Total discount": "Total discount", "Total discount": "Total discount",
"Taxable amount": "Taxable amount", "Taxable amount": "Taxable amount",
"Total taxes": "Total taxes",
"Tax rate": "Tax rate", "Tax rate": "Tax rate",
"Total amount": "Total amount", "Total taxes": "Total taxes",
"Please pay until": "Please pay until",
"Amount in words": "Amount in words",
"Notes": "Notes",
"Shipping": "Shipping", "Shipping": "Shipping",
"Paid": "Paid", "Total amount": "Total amount",
"Due:": "Due:", "Notes": "Notes",
"Invoice Settings": "Invoice Settings", "Amount in words": "Amount in words",
"Download all Invoices": "Download all Invoices", "Please pay until": "Please pay until",
"Enter your companys name": "Enter your companys name",
"Enter your companys address": "Enter your companys address",
"Enter your companys phone number": "Enter your companys phone number",
"Enter your companys VAT id": "Enter your companys VAT id",
"Enter your companys email address": "Enter your companys email address",
"Enter your companys website": "Enter your companys website",
"Enter your custom invoice prefix": "Enter your custom invoice prefix",
"Select Invoice Logo": "Select Invoice Logo",
"Payment Confirmation": "Payment Confirmation",
"Payment Confirmed!": "Payment Confirmed!",
"Server Creation Error": "Server Creation Error",
"Your servers have been suspended!": "Your servers have been suspended!",
"To automatically re-enable your server/s, you need to purchase more credits.": "To automatically re-enable your server/s, you need to purchase more credits.",
"Purchase credits": "Purchase credits",
"If you have any questions please let us know.": "If you have any questions please let us know.",
"Regards": "Regards",
"Getting started!": "Getting started!",
"EXPIRED": "EXPIRED",
"VALID": "VALID",
"Unsuspend": "Unsuspend",
"Suspend": "Suspend",
"Delete": "Delete",
"Login as User": "Login as User",
"Clone": "Clone",
"Amount due": "Amount due",
"Your Payment was successful!": "Your Payment was successful!",
"Hello":"Hello",
"Your payment was processed successfully!":"Your payment was processed successfully!"
"invoices::invoice.serial": "invoices::invoice.serial",
"invoices::invoice.date": "invoices::invoice.date",
"invoices::invoice.seller": "invoices::invoice.seller",
"invoices::invoice.buyer": "invoices::invoice.buyer",
"invoices::invoice.address": "invoices::invoice.address",
"invoices::invoice.code": "invoices::invoice.code",
"invoices::invoice.vat": "invoices::invoice.vat",
"invoices::invoice.phone": "invoices::invoice.phone",
"invoices::invoice.description": "invoices::invoice.description",
"invoices::invoice.units": "invoices::invoice.units",
"invoices::invoice.quantity": "invoices::invoice.quantity",
"invoices::invoice.price": "invoices::invoice.price",
"invoices::invoice.discount": "invoices::invoice.discount",
"invoices::invoice.tax": "invoices::invoice.tax",
"invoices::invoice.sub_total": "invoices::invoice.sub_total",
"invoices::invoice.total_discount": "invoices::invoice.total_discount",
"invoices::invoice.taxable_amount": "invoices::invoice.taxable_amount",
"invoices::invoice.tax_rate": "invoices::invoice.tax_rate",
"invoices::invoice.total_taxes": "invoices::invoice.total_taxes",
"invoices::invoice.shipping": "invoices::invoice.shipping",
"invoices::invoice.total_amount": "invoices::invoice.total_amount",
"invoices::invoice.notes": "invoices::invoice.notes",
"invoices::invoice.amount_in_words": "invoices::invoice.amount_in_words",
"invoices::invoice.pay_until": "invoices::invoice.pay_until"
} }

View file

@ -1,301 +1,324 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head>
<title>{{ $invoice->name }}</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style type="text/css" media="screen"> <head>
html { <title>{{ $invoice->name }}</title>
font-family: sans-serif; <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
line-height: 1.15;
margin: 0;
}
body { <style type="text/css" media="screen">
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; html {
font-weight: 400; font-family: sans-serif;
line-height: 1.5; line-height: 1.15;
color: #212529; margin: 0;
text-align: left; }
background-color: #fff;
font-size: 10px;
margin: 36pt;
}
h4 { body {
margin-top: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
margin-bottom: 0.5rem; font-weight: 400;
} line-height: 1.5;
color: #212529;
text-align: left;
background-color: #fff;
font-size: 10px;
margin: 36pt;
}
p { h4 {
margin-top: 0; margin-top: 0;
margin-bottom: 1rem; margin-bottom: 0.5rem;
} }
strong { p {
font-weight: bolder; margin-top: 0;
} margin-bottom: 1rem;
}
img { strong {
vertical-align: middle; font-weight: bolder;
border-style: none; }
}
table { img {
border-collapse: collapse; vertical-align: middle;
} border-style: none;
}
th { table {
text-align: inherit; border-collapse: collapse;
} }
h4, .h4 { th {
margin-bottom: 0.5rem; text-align: inherit;
font-weight: 500; }
line-height: 1.2;
}
h4, .h4 { h4,
font-size: 1.5rem; .h4 {
} margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
}
.table { h4,
width: 100%; .h4 {
margin-bottom: 1rem; font-size: 1.5rem;
color: #212529; }
}
.table th, .table {
.table td { width: 100%;
padding: 0.75rem; margin-bottom: 1rem;
vertical-align: top; color: #212529;
} }
.table.table-items td { .table th,
border-top: 1px solid #dee2e6; .table td {
} padding: 0.75rem;
vertical-align: top;
}
.table thead th { .table.table-items td {
vertical-align: bottom; border-top: 1px solid #dee2e6;
border-bottom: 2px solid #dee2e6; }
}
.mt-5 { .table thead th {
margin-top: 3rem !important; vertical-align: bottom;
} border-bottom: 2px solid #dee2e6;
}
.pr-0, .mt-5 {
.px-0 { margin-top: 3rem !important;
padding-right: 0 !important; }
}
.pl-0, .pr-0,
.px-0 { .px-0 {
padding-left: 0 !important; padding-right: 0 !important;
} }
.text-right { .pl-0,
text-align: right !important; .px-0 {
} padding-left: 0 !important;
}
.text-center { .text-right {
text-align: center !important; text-align: right !important;
} }
.text-uppercase { .text-center {
text-transform: uppercase !important; text-align: center !important;
} }
* {
font-family: "DejaVu Sans";
}
body, h1, h2, h3, h4, h5, h6, table, th, tr, td, p, div {
line-height: 1.1;
}
.party-header {
font-size: 1.5rem;
font-weight: 400;
}
.total-amount {
font-size: 12px;
font-weight: 700;
}
.border-0 {
border: none !important;
}
.cool-gray {
color: #6B7280;
}
.cool-green {
color: #308d00;
}
</style>
</head>
<body> .text-uppercase {
{{-- Header --}} text-transform: uppercase !important;
@if($invoice->logo) }
<img src="{{ $invoice->getLogo() }}" alt="logo" height="100">
@endif
<table class="table mt-5"> * {
<tbody> font-family: "DejaVu Sans";
<tr> }
<tr>
<td class="border-0 pl-0" width="70%"> body,
<h4 class="text-uppercase"> h1,
<strong>{{ $invoice->name }} {{$invoice->getSerialNumber()}}</strong> h2,
h3,
h4,
h5,
h6,
table,
th,
tr,
td,
p,
div {
line-height: 1.1;
}
.party-header {
font-size: 1.5rem;
font-weight: 400;
}
.total-amount {
font-size: 12px;
font-weight: 700;
}
.border-0 {
border: none !important;
}
.cool-gray {
color: #6B7280;
}
.cool-green {
color: #308d00;
}
</style>
</head>
<body>
{{-- Header --}}
@if ($invoice->logo)
<img src="{{ $invoice->getLogo() }}" alt="logo" height="100">
@endif
<table class="table mt-5">
<tbody>
<tr>
<tr>
<td class="border-0 pl-0" width="70%">
<h4 class="text-uppercase">
<strong>{{ $invoice->name }} {{ $invoice->getSerialNumber() }}</strong>
</h4>
</td>
<td class="border-0 pl-0">
@if ($invoice->status)
<h4 class="text-uppercase cool-green">
<strong>{{ $invoice->status }}</strong>
</h4> </h4>
</td>
<td class="border-0 pl-0">
@if($invoice->status)
<h4 class="text-uppercase cool-green">
<strong>{{ $invoice->status }}</strong>
</h4>
@endif
<p>{{ __('Serial No.') }} <strong>{{ $invoice->getSerialNumber() }}</strong></p>
<p>{{ __('Invoice date') }}: <strong>{{ $invoice->getDate() }}</strong></p>
</td>
</tr>
</tbody>
</table>
{{-- Seller - Buyer --}}
<table class="table">
<thead>
<tr>
<th class="border-0 pl-0 party-header" width="48.5%">
{{ __('Seller') }}
</th>
<th class="border-0" width="3%"></th>
<th class="border-0 pl-0 party-header">
{{ __('Buyer') }}
</th>
</tr>
</thead>
<tbody>
<tr>
<td class="px-0">
@if($invoice->seller->name)
<p class="seller-name">
<strong>{{ $invoice->seller->name }}</strong>
</p>
@endif
@if($invoice->seller->address)
<p class="seller-address">
{{ __('Address') }}: {{ $invoice->seller->address }}
</p>
@endif
@if($invoice->seller->code)
<p class="seller-code">
{{ __('Code') }}: {{ $invoice->seller->code }}
</p>
@endif
@if($invoice->seller->vat)
<p class="seller-vat">
{{ __('VAT Code') }}: {{ $invoice->seller->vat }}
</p>
@endif
@if($invoice->seller->phone)
<p class="seller-phone">
{{ __('Phone') }}: {{ $invoice->seller->phone }}
</p>
@endif
@foreach($invoice->seller->custom_fields as $key => $value)
<p class="seller-custom-field">
{{ ucfirst($key) }}: {{ $value }}
</p>
@endforeach
</td>
<td class="border-0"></td>
<td class="px-0">
@if($invoice->buyer->name)
<p class="buyer-name">
<strong>{{ $invoice->buyer->name }}</strong>
</p>
@endif
@if($invoice->buyer->adress)
<p class="buyer-address">
{{ __('Address') }}: {{ $invoice->buyer->address }}
</p>
@endif
@if($invoice->buyer->code)
<p class="buyer-code">
{{ __('Code') }}: {{ $invoice->buyer->code }}
</p>
@endif
@if($invoice->buyer->vat)
<p class="buyer-vat">
{{ __('VAT Code') }}: {{ $invoice->buyer->vat }}
</p>
@endif
@if($invoice->buyer->phone)
<p class="buyer-phone">
{{ __('Phone') }}: {{ $invoice->buyer->phone }}
</p>
@endif
@foreach($invoice->buyer->custom_fields as $key => $value)
<p class="buyer-custom-field">
{{ ucfirst($key) }}: {{ $value }}
</p>
@endforeach
</td>
</tr>
</tbody>
</table>
{{-- Table --}}
<table class="table table-items">
<thead>
<tr>
<th scope="col" class="border-0 pl-0">{{ __('Description') }}</th>
@if($invoice->hasItemUnits)
<th scope="col" class="text-center border-0">{{ __('Units') }}</th>
@endif @endif
<th scope="col" class="text-center border-0">{{ __('Quantity') }}</th> <p>{{ __('Serial No.') }} <strong>{{ $invoice->getSerialNumber() }}</strong></p>
<th scope="col" class="text-right border-0">{{ __('Price') }}</th> <p>{{ __('Invoice date') }}: <strong>{{ $invoice->getDate() }}</strong></p>
@if($invoice->hasItemDiscount) </td>
<th scope="col" class="text-right border-0">{{ __('Discount') }}</th> </tr>
</tbody>
</table>
{{-- Seller - Buyer --}}
<table class="table">
<thead>
<tr>
<th class="border-0 pl-0 party-header" width="48.5%">
{{ __('Seller') }}
</th>
<th class="border-0" width="3%"></th>
<th class="border-0 pl-0 party-header">
{{ __('Buyer') }}
</th>
</tr>
</thead>
<tbody>
<tr>
<td class="px-0">
@if ($invoice->seller->name)
<p class="seller-name">
<strong>{{ $invoice->seller->name }}</strong>
</p>
@endif @endif
@if($invoice->hasItemTax)
<th scope="col" class="text-right border-0">{{ __('Tax') }}</th> @if ($invoice->seller->address)
<p class="seller-address">
{{ __('Address') }}: {{ $invoice->seller->address }}
</p>
@endif @endif
<th scope="col" class="text-right border-0 pr-0">{{ __('Subtotal') }}</th>
</tr> @if ($invoice->seller->code)
</thead> <p class="seller-code">
<tbody> {{ __('Code') }}: {{ $invoice->seller->code }}
{{-- Items --}} </p>
@foreach($invoice->items as $item) @endif
@if ($invoice->seller->vat)
<p class="seller-vat">
{{ __('VAT Code') }}: {{ $invoice->seller->vat }}
</p>
@endif
@if ($invoice->seller->phone)
<p class="seller-phone">
{{ __('Phone') }}: {{ $invoice->seller->phone }}
</p>
@endif
@foreach ($invoice->seller->custom_fields as $key => $value)
<p class="seller-custom-field">
{{ ucfirst($key) }}: {{ $value }}
</p>
@endforeach
</td>
<td class="border-0"></td>
<td class="px-0">
@if ($invoice->buyer->name)
<p class="buyer-name">
<strong>{{ $invoice->buyer->name }}</strong>
</p>
@endif
@if ($invoice->buyer->adress)
<p class="buyer-address">
{{ __('Address') }}: {{ $invoice->buyer->address }}
</p>
@endif
@if ($invoice->buyer->code)
<p class="buyer-code">
{{ __('Code') }}: {{ $invoice->buyer->code }}
</p>
@endif
@if ($invoice->buyer->vat)
<p class="buyer-vat">
{{ __('VAT Code') }}: {{ $invoice->buyer->vat }}
</p>
@endif
@if ($invoice->buyer->phone)
<p class="buyer-phone">
{{ __('Phone') }}: {{ $invoice->buyer->phone }}
</p>
@endif
@foreach ($invoice->buyer->custom_fields as $key => $value)
<p class="buyer-custom-field">
{{ ucfirst($key) }}: {{ $value }}
</p>
@endforeach
</td>
</tr>
</tbody>
</table>
{{-- Table --}}
<table class="table table-items">
<thead>
<tr>
<th scope="col" class="border-0 pl-0">{{ __('Description') }}</th>
@if ($invoice->hasItemUnits)
<th scope="col" class="text-center border-0">{{ __('Units') }}</th>
@endif
<th scope="col" class="text-center border-0">{{ __('Quantity') }}</th>
<th scope="col" class="text-right border-0">{{ __('Price') }}</th>
@if ($invoice->hasItemDiscount)
<th scope="col" class="text-right border-0">{{ __('Discount') }}</th>
@endif
@if ($invoice->hasItemTax)
<th scope="col" class="text-right border-0">{{ __('Tax') }}</th>
@endif
<th scope="col" class="text-right border-0 pr-0">{{ __('Subtotal') }}</th>
</tr>
</thead>
<tbody>
{{-- Items --}}
@foreach ($invoice->items as $item)
<tr> <tr>
<td class="pl-0"> <td class="pl-0">
{{ $item->title }} {{ $item->title }}
@if($item->description) @if ($item->description)
<p class="cool-gray">{{ $item->description }}</p> <p class="cool-gray">{{ $item->description }}</p>
@endif @endif
</td> </td>
@if($invoice->hasItemUnits) @if ($invoice->hasItemUnits)
<td class="text-center">{{ $item->units }}</td> <td class="text-center">{{ $item->units }}</td>
@endif @endif
<td class="text-center">{{ $item->quantity }}</td> <td class="text-center">{{ $item->quantity }}</td>
<td class="text-right"> <td class="text-right">
{{ $invoice->formatCurrency($item->price_per_unit) }} {{ $invoice->formatCurrency($item->price_per_unit) }}
</td> </td>
@if($invoice->hasItemDiscount) @if ($invoice->hasItemDiscount)
<td class="text-right"> <td class="text-right">
{{ $invoice->formatCurrency($item->discount) }} {{ $invoice->formatCurrency($item->discount) }}
</td> </td>
@endif @endif
@if($invoice->hasItemTax) @if ($invoice->hasItemTax)
<td class="text-right"> <td class="text-right">
{{ $invoice->formatCurrency($item->tax) }} {{ $invoice->formatCurrency($item->tax) }}
</td> </td>
@ -305,86 +328,87 @@
{{ $invoice->formatCurrency($item->sub_total_price) }} {{ $invoice->formatCurrency($item->sub_total_price) }}
</td> </td>
</tr> </tr>
@endforeach @endforeach
{{-- Summary --}} {{-- Summary --}}
@if($invoice->hasItemOrInvoiceDiscount()) @if ($invoice->hasItemOrInvoiceDiscount())
<tr> <tr>
<td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td> <td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td>
<td class="text-right pl-0">{{ __('Total discount') }}</td> <td class="text-right pl-0">{{ __('Total discount') }}</td>
<td class="text-right pr-0"> <td class="text-right pr-0">
{{ $invoice->formatCurrency($invoice->total_discount) }} {{ $invoice->formatCurrency($invoice->total_discount) }}
</td> </td>
</tr> </tr>
@endif @endif
@if($invoice->taxable_amount) @if ($invoice->taxable_amount)
<tr> <tr>
<td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td> <td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td>
<td class="text-right pl-0">{{ __('Taxable amount') }}</td> <td class="text-right pl-0">{{ __('Taxable amount') }}</td>
<td class="text-right pr-0"> <td class="text-right pr-0">
{{ $invoice->formatCurrency($invoice->taxable_amount) }} {{ $invoice->formatCurrency($invoice->taxable_amount) }}
</td> </td>
</tr> </tr>
@endif @endif
@if($invoice->tax_rate) @if ($invoice->tax_rate)
<tr> <tr>
<td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td> <td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td>
<td class="text-right pl-0">{{ __('Tax rate') }}</td> <td class="text-right pl-0">{{ __('Tax rate') }}</td>
<td class="text-right pr-0"> <td class="text-right pr-0">
{{ $invoice->tax_rate }}% {{ $invoice->tax_rate }}%
</td> </td>
</tr> </tr>
@endif @endif
@if($invoice->hasItemOrInvoiceTax()) @if ($invoice->hasItemOrInvoiceTax())
<tr> <tr>
<td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td> <td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td>
<td class="text-right pl-0">{{ __('Total taxes') }}</td> <td class="text-right pl-0">{{ __('Total taxes') }}</td>
<td class="text-right pr-0"> <td class="text-right pr-0">
{{ $invoice->formatCurrency($invoice->total_taxes) }} {{ $invoice->formatCurrency($invoice->total_taxes) }}
</td> </td>
</tr> </tr>
@endif @endif
@if($invoice->shipping_amount) @if ($invoice->shipping_amount)
<tr> <tr>
<td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td> <td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td>
<td class="text-right pl-0">{{ __('Shipping') }}</td> <td class="text-right pl-0">{{ __('Shipping') }}</td>
<td class="text-right pr-0"> <td class="text-right pr-0">
{{ $invoice->formatCurrency($invoice->shipping_amount) }} {{ $invoice->formatCurrency($invoice->shipping_amount) }}
</td> </td>
</tr> </tr>
@endif @endif
<tr> <tr>
<td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td> <td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td>
<td class="text-right pl-0">{{ __('Total amount') }}</td> <td class="text-right pl-0">{{ __('Total amount') }}</td>
<td class="text-right pr-0 total-amount"> <td class="text-right pr-0 total-amount">
{{ $invoice->formatCurrency($invoice->total_amount) }} {{ $invoice->formatCurrency($invoice->total_amount) }}
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@if($invoice->notes)
<p>
{{ trans('Notes') }}: {!! $invoice->notes !!}
</p>
@endif
@if ($invoice->notes)
<p> <p>
{{ trans('Amount in words') }}: {{ $invoice->getTotalAmountInWords() }} {{ __('Notes') }}: {!! $invoice->notes !!}
</p>
<p>
{{ trans('Please pay until') }}: {{ $invoice->getPayUntilDate() }}
</p> </p>
@endif
<p>
{{ __('Amount in words') }}: {{ $invoice->getTotalAmountInWords() }}
</p>
<p>
{{ __('Please pay until') }}: {{ $invoice->getPayUntilDate() }}
</p>
<script type="text/php">
if (isset($pdf) && $PAGE_COUNT > 1) {
$text = "Page {PAGE_NUM} / {PAGE_COUNT}";
$size = 10;
$font = $fontMetrics->getFont("Verdana");
$width = $fontMetrics->get_text_width($text, $font, $size) / 2;
$x = ($pdf->get_width() - $width);
$y = $pdf->get_height() - 35;
$pdf->page_text($x, $y, $text, $font, $size);
}
</script>
</body>
<script type="text/php">
if (isset($pdf) && $PAGE_COUNT > 1) {
$text = "Page {PAGE_NUM} / {PAGE_COUNT}";
$size = 10;
$font = $fontMetrics->getFont("Verdana");
$width = $fontMetrics->get_text_width($text, $font, $size) / 2;
$x = ($pdf->get_width() - $width);
$y = $pdf->get_height() - 35;
$pdf->page_text($x, $y, $text, $font, $size);
}
</script>
</body>
</html> </html>

View file

@ -1,301 +1,324 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head>
<title>{{ $invoice->name }}</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style type="text/css" media="screen"> <head>
html { <title>{{ $invoice->name }}</title>
font-family: sans-serif; <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
line-height: 1.15;
margin: 0;
}
body { <style type="text/css" media="screen">
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; html {
font-weight: 400; font-family: sans-serif;
line-height: 1.5; line-height: 1.15;
color: #212529; margin: 0;
text-align: left; }
background-color: #fff;
font-size: 10px;
margin: 36pt;
}
h4 { body {
margin-top: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
margin-bottom: 0.5rem; font-weight: 400;
} line-height: 1.5;
color: #212529;
text-align: left;
background-color: #fff;
font-size: 10px;
margin: 36pt;
}
p { h4 {
margin-top: 0; margin-top: 0;
margin-bottom: 1rem; margin-bottom: 0.5rem;
} }
strong { p {
font-weight: bolder; margin-top: 0;
} margin-bottom: 1rem;
}
img { strong {
vertical-align: middle; font-weight: bolder;
border-style: none; }
}
table { img {
border-collapse: collapse; vertical-align: middle;
} border-style: none;
}
th { table {
text-align: inherit; border-collapse: collapse;
} }
h4, .h4 { th {
margin-bottom: 0.5rem; text-align: inherit;
font-weight: 500; }
line-height: 1.2;
}
h4, .h4 { h4,
font-size: 1.5rem; .h4 {
} margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
}
.table { h4,
width: 100%; .h4 {
margin-bottom: 1rem; font-size: 1.5rem;
color: #212529; }
}
.table th, .table {
.table td { width: 100%;
padding: 0.75rem; margin-bottom: 1rem;
vertical-align: top; color: #212529;
} }
.table.table-items td { .table th,
border-top: 1px solid #dee2e6; .table td {
} padding: 0.75rem;
vertical-align: top;
}
.table thead th { .table.table-items td {
vertical-align: bottom; border-top: 1px solid #dee2e6;
border-bottom: 2px solid #dee2e6; }
}
.mt-5 { .table thead th {
margin-top: 3rem !important; vertical-align: bottom;
} border-bottom: 2px solid #dee2e6;
}
.pr-0, .mt-5 {
.px-0 { margin-top: 3rem !important;
padding-right: 0 !important; }
}
.pl-0, .pr-0,
.px-0 { .px-0 {
padding-left: 0 !important; padding-right: 0 !important;
} }
.text-right { .pl-0,
text-align: right !important; .px-0 {
} padding-left: 0 !important;
}
.text-center { .text-right {
text-align: center !important; text-align: right !important;
} }
.text-uppercase { .text-center {
text-transform: uppercase !important; text-align: center !important;
} }
* {
font-family: "DejaVu Sans";
}
body, h1, h2, h3, h4, h5, h6, table, th, tr, td, p, div {
line-height: 1.1;
}
.party-header {
font-size: 1.5rem;
font-weight: 400;
}
.total-amount {
font-size: 12px;
font-weight: 700;
}
.border-0 {
border: none !important;
}
.cool-gray {
color: #6B7280;
}
.cool-green {
color: #308d00;
}
</style>
</head>
<body> .text-uppercase {
{{-- Header --}} text-transform: uppercase !important;
@if($invoice->logo) }
<img src="{{ $invoice->getLogo() }}" alt="logo" height="100">
@endif
<table class="table mt-5"> * {
<tbody> font-family: "DejaVu Sans";
<tr> }
<tr>
<td class="border-0 pl-0" width="70%"> body,
<h4 class="text-uppercase"> h1,
<strong>{{ $invoice->name }} {{$invoice->getSerialNumber()}}</strong> h2,
h3,
h4,
h5,
h6,
table,
th,
tr,
td,
p,
div {
line-height: 1.1;
}
.party-header {
font-size: 1.5rem;
font-weight: 400;
}
.total-amount {
font-size: 12px;
font-weight: 700;
}
.border-0 {
border: none !important;
}
.cool-gray {
color: #6B7280;
}
.cool-green {
color: #308d00;
}
</style>
</head>
<body>
{{-- Header --}}
@if ($invoice->logo)
<img src="{{ $invoice->getLogo() }}" alt="logo" height="100">
@endif
<table class="table mt-5">
<tbody>
<tr>
<tr>
<td class="border-0 pl-0" width="70%">
<h4 class="text-uppercase">
<strong>{{ $invoice->name }} {{ $invoice->getSerialNumber() }}</strong>
</h4>
</td>
<td class="border-0 pl-0">
@if ($invoice->status)
<h4 class="text-uppercase cool-green">
<strong>{{ $invoice->status }}</strong>
</h4> </h4>
</td>
<td class="border-0 pl-0">
@if($invoice->status)
<h4 class="text-uppercase cool-green">
<strong>{{ $invoice->status }}</strong>
</h4>
@endif
<p>{{ __('invoices::invoice.serial') }} <strong>{{ $invoice->getSerialNumber() }}</strong></p>
<p>{{ __('invoices::invoice.date') }}: <strong>{{ $invoice->getDate() }}</strong></p>
</td>
</tr>
</tbody>
</table>
{{-- Seller - Buyer --}}
<table class="table">
<thead>
<tr>
<th class="border-0 pl-0 party-header" width="48.5%">
{{ __('invoices::invoice.seller') }}
</th>
<th class="border-0" width="3%"></th>
<th class="border-0 pl-0 party-header">
{{ __('invoices::invoice.buyer') }}
</th>
</tr>
</thead>
<tbody>
<tr>
<td class="px-0">
@if($invoice->seller->name)
<p class="seller-name">
<strong>{{ $invoice->seller->name }}</strong>
</p>
@endif
@if($invoice->seller->address)
<p class="seller-address">
{{ __('invoices::invoice.address') }}: {{ $invoice->seller->address }}
</p>
@endif
@if($invoice->seller->code)
<p class="seller-code">
{{ __('invoices::invoice.code') }}: {{ $invoice->seller->code }}
</p>
@endif
@if($invoice->seller->vat)
<p class="seller-vat">
{{ __('invoices::invoice.vat') }}: {{ $invoice->seller->vat }}
</p>
@endif
@if($invoice->seller->phone)
<p class="seller-phone">
{{ __('invoices::invoice.phone') }}: {{ $invoice->seller->phone }}
</p>
@endif
@foreach($invoice->seller->custom_fields as $key => $value)
<p class="seller-custom-field">
{{ ucfirst($key) }}: {{ $value }}
</p>
@endforeach
</td>
<td class="border-0"></td>
<td class="px-0">
@if($invoice->buyer->name)
<p class="buyer-name">
<strong>{{ $invoice->buyer->name }}</strong>
</p>
@endif
@if($invoice->buyer->address)
<p class="buyer-address">
{{ __('invoices::invoice.address') }}: {{ $invoice->buyer->address }}
</p>
@endif
@if($invoice->buyer->code)
<p class="buyer-code">
{{ __('invoices::invoice.code') }}: {{ $invoice->buyer->code }}
</p>
@endif
@if($invoice->buyer->vat)
<p class="buyer-vat">
{{ __('invoices::invoice.vat') }}: {{ $invoice->buyer->vat }}
</p>
@endif
@if($invoice->buyer->phone)
<p class="buyer-phone">
{{ __('invoices::invoice.phone') }}: {{ $invoice->buyer->phone }}
</p>
@endif
@foreach($invoice->buyer->custom_fields as $key => $value)
<p class="buyer-custom-field">
{{ ucfirst($key) }}: {{ $value }}
</p>
@endforeach
</td>
</tr>
</tbody>
</table>
{{-- Table --}}
<table class="table table-items">
<thead>
<tr>
<th scope="col" class="border-0 pl-0">{{ __('invoices::invoice.description') }}</th>
@if($invoice->hasItemUnits)
<th scope="col" class="text-center border-0">{{ __('invoices::invoice.units') }}</th>
@endif @endif
<th scope="col" class="text-center border-0">{{ __('invoices::invoice.quantity') }}</th> <p>{{ __('invoices::invoice.serial') }} <strong>{{ $invoice->getSerialNumber() }}</strong></p>
<th scope="col" class="text-right border-0">{{ __('invoices::invoice.price') }}</th> <p>{{ __('invoices::invoice.date') }}: <strong>{{ $invoice->getDate() }}</strong></p>
@if($invoice->hasItemDiscount) </td>
<th scope="col" class="text-right border-0">{{ __('invoices::invoice.discount') }}</th> </tr>
</tbody>
</table>
{{-- Seller - Buyer --}}
<table class="table">
<thead>
<tr>
<th class="border-0 pl-0 party-header" width="48.5%">
{{ __('invoices::invoice.seller') }}
</th>
<th class="border-0" width="3%"></th>
<th class="border-0 pl-0 party-header">
{{ __('invoices::invoice.buyer') }}
</th>
</tr>
</thead>
<tbody>
<tr>
<td class="px-0">
@if ($invoice->seller->name)
<p class="seller-name">
<strong>{{ $invoice->seller->name }}</strong>
</p>
@endif @endif
@if($invoice->hasItemTax)
<th scope="col" class="text-right border-0">{{ __('invoices::invoice.tax') }}</th> @if ($invoice->seller->address)
<p class="seller-address">
{{ __('invoices::invoice.address') }}: {{ $invoice->seller->address }}
</p>
@endif @endif
<th scope="col" class="text-right border-0 pr-0">{{ __('invoices::invoice.sub_total') }}</th>
</tr> @if ($invoice->seller->code)
</thead> <p class="seller-code">
<tbody> {{ __('invoices::invoice.code') }}: {{ $invoice->seller->code }}
{{-- Items --}} </p>
@foreach($invoice->items as $item) @endif
@if ($invoice->seller->vat)
<p class="seller-vat">
{{ __('invoices::invoice.vat') }}: {{ $invoice->seller->vat }}
</p>
@endif
@if ($invoice->seller->phone)
<p class="seller-phone">
{{ __('invoices::invoice.phone') }}: {{ $invoice->seller->phone }}
</p>
@endif
@foreach ($invoice->seller->custom_fields as $key => $value)
<p class="seller-custom-field">
{{ ucfirst($key) }}: {{ $value }}
</p>
@endforeach
</td>
<td class="border-0"></td>
<td class="px-0">
@if ($invoice->buyer->name)
<p class="buyer-name">
<strong>{{ $invoice->buyer->name }}</strong>
</p>
@endif
@if ($invoice->buyer->address)
<p class="buyer-address">
{{ __('invoices::invoice.address') }}: {{ $invoice->buyer->address }}
</p>
@endif
@if ($invoice->buyer->code)
<p class="buyer-code">
{{ __('invoices::invoice.code') }}: {{ $invoice->buyer->code }}
</p>
@endif
@if ($invoice->buyer->vat)
<p class="buyer-vat">
{{ __('invoices::invoice.vat') }}: {{ $invoice->buyer->vat }}
</p>
@endif
@if ($invoice->buyer->phone)
<p class="buyer-phone">
{{ __('invoices::invoice.phone') }}: {{ $invoice->buyer->phone }}
</p>
@endif
@foreach ($invoice->buyer->custom_fields as $key => $value)
<p class="buyer-custom-field">
{{ ucfirst($key) }}: {{ $value }}
</p>
@endforeach
</td>
</tr>
</tbody>
</table>
{{-- Table --}}
<table class="table table-items">
<thead>
<tr>
<th scope="col" class="border-0 pl-0">{{ __('invoices::invoice.description') }}</th>
@if ($invoice->hasItemUnits)
<th scope="col" class="text-center border-0">{{ __('invoices::invoice.units') }}</th>
@endif
<th scope="col" class="text-center border-0">{{ __('invoices::invoice.quantity') }}</th>
<th scope="col" class="text-right border-0">{{ __('invoices::invoice.price') }}</th>
@if ($invoice->hasItemDiscount)
<th scope="col" class="text-right border-0">{{ __('invoices::invoice.discount') }}</th>
@endif
@if ($invoice->hasItemTax)
<th scope="col" class="text-right border-0">{{ __('invoices::invoice.tax') }}</th>
@endif
<th scope="col" class="text-right border-0 pr-0">{{ __('invoices::invoice.sub_total') }}</th>
</tr>
</thead>
<tbody>
{{-- Items --}}
@foreach ($invoice->items as $item)
<tr> <tr>
<td class="pl-0"> <td class="pl-0">
{{ $item->title }} {{ $item->title }}
@if($item->description) @if ($item->description)
<p class="cool-gray">{{ $item->description }}</p> <p class="cool-gray">{{ $item->description }}</p>
@endif @endif
</td> </td>
@if($invoice->hasItemUnits) @if ($invoice->hasItemUnits)
<td class="text-center">{{ $item->units }}</td> <td class="text-center">{{ $item->units }}</td>
@endif @endif
<td class="text-center">{{ $item->quantity }}</td> <td class="text-center">{{ $item->quantity }}</td>
<td class="text-right"> <td class="text-right">
{{ $invoice->formatCurrency($item->price_per_unit) }} {{ $invoice->formatCurrency($item->price_per_unit) }}
</td> </td>
@if($invoice->hasItemDiscount) @if ($invoice->hasItemDiscount)
<td class="text-right"> <td class="text-right">
{{ $invoice->formatCurrency($item->discount) }} {{ $invoice->formatCurrency($item->discount) }}
</td> </td>
@endif @endif
@if($invoice->hasItemTax) @if ($invoice->hasItemTax)
<td class="text-right"> <td class="text-right">
{{ $invoice->formatCurrency($item->tax) }} {{ $invoice->formatCurrency($item->tax) }}
</td> </td>
@ -305,86 +328,87 @@
{{ $invoice->formatCurrency($item->sub_total_price) }} {{ $invoice->formatCurrency($item->sub_total_price) }}
</td> </td>
</tr> </tr>
@endforeach @endforeach
{{-- Summary --}} {{-- Summary --}}
@if($invoice->hasItemOrInvoiceDiscount()) @if ($invoice->hasItemOrInvoiceDiscount())
<tr> <tr>
<td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td> <td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td>
<td class="text-right pl-0">{{ __('invoices::invoice.total_discount') }}</td> <td class="text-right pl-0">{{ __('invoices::invoice.total_discount') }}</td>
<td class="text-right pr-0"> <td class="text-right pr-0">
{{ $invoice->formatCurrency($invoice->total_discount) }} {{ $invoice->formatCurrency($invoice->total_discount) }}
</td> </td>
</tr> </tr>
@endif @endif
@if($invoice->taxable_amount) @if ($invoice->taxable_amount)
<tr> <tr>
<td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td> <td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td>
<td class="text-right pl-0">{{ __('invoices::invoice.taxable_amount') }}</td> <td class="text-right pl-0">{{ __('invoices::invoice.taxable_amount') }}</td>
<td class="text-right pr-0"> <td class="text-right pr-0">
{{ $invoice->formatCurrency($invoice->taxable_amount) }} {{ $invoice->formatCurrency($invoice->taxable_amount) }}
</td> </td>
</tr> </tr>
@endif @endif
@if($invoice->tax_rate) @if ($invoice->tax_rate)
<tr> <tr>
<td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td> <td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td>
<td class="text-right pl-0">{{ __('invoices::invoice.tax_rate') }}</td> <td class="text-right pl-0">{{ __('invoices::invoice.tax_rate') }}</td>
<td class="text-right pr-0"> <td class="text-right pr-0">
{{ $invoice->tax_rate }}% {{ $invoice->tax_rate }}%
</td> </td>
</tr> </tr>
@endif @endif
@if($invoice->hasItemOrInvoiceTax()) @if ($invoice->hasItemOrInvoiceTax())
<tr> <tr>
<td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td> <td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td>
<td class="text-right pl-0">{{ __('invoices::invoice.total_taxes') }}</td> <td class="text-right pl-0">{{ __('invoices::invoice.total_taxes') }}</td>
<td class="text-right pr-0"> <td class="text-right pr-0">
{{ $invoice->formatCurrency($invoice->total_taxes) }} {{ $invoice->formatCurrency($invoice->total_taxes) }}
</td> </td>
</tr> </tr>
@endif @endif
@if($invoice->shipping_amount) @if ($invoice->shipping_amount)
<tr> <tr>
<td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td> <td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td>
<td class="text-right pl-0">{{ __('invoices::invoice.shipping') }}</td> <td class="text-right pl-0">{{ __('invoices::invoice.shipping') }}</td>
<td class="text-right pr-0"> <td class="text-right pr-0">
{{ $invoice->formatCurrency($invoice->shipping_amount) }} {{ $invoice->formatCurrency($invoice->shipping_amount) }}
</td> </td>
</tr> </tr>
@endif @endif
<tr> <tr>
<td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td> <td colspan="{{ $invoice->table_columns - 2 }}" class="border-0"></td>
<td class="text-right pl-0">{{ __('invoices::invoice.total_amount') }}</td> <td class="text-right pl-0">{{ __('invoices::invoice.total_amount') }}</td>
<td class="text-right pr-0 total-amount"> <td class="text-right pr-0 total-amount">
{{ $invoice->formatCurrency($invoice->total_amount) }} {{ $invoice->formatCurrency($invoice->total_amount) }}
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@if($invoice->notes)
<p>
{{ trans('invoices::invoice.notes') }}: {!! $invoice->notes !!}
</p>
@endif
@if ($invoice->notes)
<p> <p>
{{ trans('invoices::invoice.amount_in_words') }}: {{ $invoice->getTotalAmountInWords() }} {{ __('invoices::invoice.notes') }}: {!! $invoice->notes !!}
</p>
<p>
{{ trans('invoices::invoice.pay_until') }}: {{ $invoice->getPayUntilDate() }}
</p> </p>
@endif
<p>
{{ __('invoices::invoice.amount_in_words') }}: {{ $invoice->getTotalAmountInWords() }}
</p>
<p>
{{ __('invoices::invoice.pay_until') }}: {{ $invoice->getPayUntilDate() }}
</p>
<script type="text/php">
if (isset($pdf) && $PAGE_COUNT > 1) {
$text = "Page {PAGE_NUM} / {PAGE_COUNT}";
$size = 10;
$font = $fontMetrics->getFont("Verdana");
$width = $fontMetrics->get_text_width($text, $font, $size) / 2;
$x = ($pdf->get_width() - $width);
$y = $pdf->get_height() - 35;
$pdf->page_text($x, $y, $text, $font, $size);
}
</script>
</body>
<script type="text/php">
if (isset($pdf) && $PAGE_COUNT > 1) {
$text = "Page {PAGE_NUM} / {PAGE_COUNT}";
$size = 10;
$font = $fontMetrics->getFont("Verdana");
$width = $fontMetrics->get_text_width($text, $font, $size) / 2;
$x = ($pdf->get_width() - $width);
$y = $pdf->get_height() - 35;
$pdf->page_text($x, $y, $text, $font, $size);
}
</script>
</body>
</html> </html>