mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-03 22:47:32 -05:00 
			
		
		
		
	Working on auto tax calculations
This commit is contained in:
		
							parent
							
								
									49b3182639
								
							
						
					
					
						commit
						aa51299a10
					
				@ -59,7 +59,11 @@ class InvoiceItem
 | 
			
		||||
 | 
			
		||||
    public $type_id = '1'; //1 = product, 2 = service, 3 unpaid gateway fee, 4 paid gateway fee, 5 late fee, 6 expense
 | 
			
		||||
 | 
			
		||||
    public $tax_id = '';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public static $casts = [
 | 
			
		||||
        'tax_id' => 'string',
 | 
			
		||||
        'type_id' => 'string',
 | 
			
		||||
        'quantity' => 'float',
 | 
			
		||||
        'cost' => 'float',
 | 
			
		||||
 | 
			
		||||
@ -14,4 +14,18 @@ namespace App\DataMapper\Tax;
 | 
			
		||||
interface RuleInterface
 | 
			
		||||
{
 | 
			
		||||
    public function run();
 | 
			
		||||
 | 
			
		||||
    public function taxByType(?int $type);
 | 
			
		||||
 | 
			
		||||
    public function taxExempt();
 | 
			
		||||
    
 | 
			
		||||
    public function taxDigital();
 | 
			
		||||
 | 
			
		||||
    public function taxService();
 | 
			
		||||
 | 
			
		||||
    public function taxShipping();
 | 
			
		||||
 | 
			
		||||
    public function taxPhysical();
 | 
			
		||||
 | 
			
		||||
    public function default();
 | 
			
		||||
}
 | 
			
		||||
@ -64,8 +64,8 @@ class Response
 | 
			
		||||
    public string $geoState = "";
 | 
			
		||||
    public float $taxSales = 0;
 | 
			
		||||
    public float $taxUse = 0;
 | 
			
		||||
    public string $txbService = "";
 | 
			
		||||
    public string $txbFreight = "";
 | 
			
		||||
    public string $txbService = ""; // N = No, Y = Yes
 | 
			
		||||
    public string $txbFreight = ""; // N = No, Y = Yes
 | 
			
		||||
    public float $stateSalesTax = 0;
 | 
			
		||||
    public float $stateUseTax = 0;
 | 
			
		||||
    public float $citySalesTax = 0;
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,10 @@
 | 
			
		||||
 | 
			
		||||
namespace App\DataMapper\Tax\us;
 | 
			
		||||
 | 
			
		||||
class Rule
 | 
			
		||||
use App\Models\Product;
 | 
			
		||||
use App\DataMapper\Tax\RuleInterface;
 | 
			
		||||
 | 
			
		||||
class Rule implements RuleInterface
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    public float $al_sales_tax_rate = 4; // Alabama
 | 
			
		||||
@ -67,4 +70,77 @@ class Rule
 | 
			
		||||
    public float $dc_sales_tax_rate = 6; // District of Columbia
 | 
			
		||||
    public float $pr_sales_tax_rate = 11.5; // Puerto Rico
 | 
			
		||||
 | 
			
		||||
    public string $tax_name1 = '';
 | 
			
		||||
    public float $tax_rate1 = 0;
 | 
			
		||||
 | 
			
		||||
    public string $tax_name2 = '';
 | 
			
		||||
    public float $tax_rate2 = 0;
 | 
			
		||||
    
 | 
			
		||||
    public string $tax_name3 = '';
 | 
			
		||||
    public float $tax_rate3 = 0;
 | 
			
		||||
    
 | 
			
		||||
    public function __construct(public RuleInterface $tax_data)
 | 
			
		||||
    {
 | 
			
		||||
        $this->tax_data = $tax_data;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function run()
 | 
			
		||||
    {
 | 
			
		||||
        $this->tax_name1 = $this->tax_data->taxSales * 100;
 | 
			
		||||
        $this->tax_rate1 = "{$this->tax_data->geoState} Sales Tax";
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function taxByType(?int $product_tax_type)
 | 
			
		||||
    {
 | 
			
		||||
        if(!$product_tax_type)
 | 
			
		||||
            return;
 | 
			
		||||
 | 
			
		||||
        match($product_tax_type){
 | 
			
		||||
            Product::PRODUCT_TAX_EXEMPT => $this->taxExempt(),
 | 
			
		||||
            Product::PRODUCT_TYPE_DIGITAL => $this->taxDigital(),
 | 
			
		||||
            Product::PRODUCT_TYPE_SERVICE => $this->taxService(),
 | 
			
		||||
            Product::PRODUCT_TYPE_SHIPPING => $this->taxShipping(),
 | 
			
		||||
            Product::PRODUCT_TYPE_PHYSICAL => $this->taxPhysical(),
 | 
			
		||||
            default => $this->default(),
 | 
			
		||||
        };
 | 
			
		||||
        
 | 
			
		||||
        return $this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function taxExempt()
 | 
			
		||||
    {
 | 
			
		||||
        $this->tax_name1 = '';
 | 
			
		||||
        $this->tax_rate1 = 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function taxDigital()
 | 
			
		||||
    {
 | 
			
		||||
        $this->tax_name1 = '';
 | 
			
		||||
        $this->tax_rate1 = 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function taxService()
 | 
			
		||||
    {
 | 
			
		||||
        if($this->tax_data->txbService == 'Y')
 | 
			
		||||
            $this->run();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function taxShipping()
 | 
			
		||||
    {
 | 
			
		||||
        if($this->tax_data->txbFreight == 'N')
 | 
			
		||||
            $this->run();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function taxPhysical()
 | 
			
		||||
    {
 | 
			
		||||
        $this->tax_name1 = '';
 | 
			
		||||
        $this->tax_rate1 = 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function default()
 | 
			
		||||
    {
 | 
			
		||||
        $this->tax_name1 = '';
 | 
			
		||||
        $this->tax_rate1 = 0;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -15,6 +15,7 @@ use App\Models\Client;
 | 
			
		||||
use App\Models\Invoice;
 | 
			
		||||
use App\DataMapper\InvoiceItem;
 | 
			
		||||
use App\DataMapper\BaseSettings;
 | 
			
		||||
use App\DataMapper\Tax\RuleInterface;
 | 
			
		||||
use App\Utils\Traits\NumberFormatter;
 | 
			
		||||
 | 
			
		||||
class InvoiceItemSum
 | 
			
		||||
@ -53,6 +54,8 @@ class InvoiceItemSum
 | 
			
		||||
 | 
			
		||||
    private bool $calc_tax = false;
 | 
			
		||||
 | 
			
		||||
    private RuleInterface $rule;
 | 
			
		||||
     
 | 
			
		||||
    public function __construct($invoice)
 | 
			
		||||
    {
 | 
			
		||||
        $this->tax_collection = collect([]);
 | 
			
		||||
@ -98,11 +101,18 @@ class InvoiceItemSum
 | 
			
		||||
 | 
			
		||||
    private function shouldCalculateTax(): bool
 | 
			
		||||
    {
 | 
			
		||||
        if(!$this->invoice->company->calculate_taxes)
 | 
			
		||||
        if(!$this->invoice->company->calculate_taxes || $this->client->is_tax_exempt)
 | 
			
		||||
            return false;
 | 
			
		||||
 | 
			
		||||
        if(in_array($this->client->country->iso_3166_2, ['US']))
 | 
			
		||||
        if(in_array($this->client->country->iso_3166_2, ['US'])){ //only calculate for USA
 | 
			
		||||
            
 | 
			
		||||
            $class = "App\DataMapper\Tax\\".strtolower($this->client->country->iso_3166_2)."\\Rule";
 | 
			
		||||
 | 
			
		||||
            $this->rule = new $class($this->invoice->tax_data);
 | 
			
		||||
 | 
			
		||||
            return true;
 | 
			
		||||
        
 | 
			
		||||
        }            
 | 
			
		||||
            
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
@ -145,14 +155,34 @@ class InvoiceItemSum
 | 
			
		||||
     *
 | 
			
		||||
     * @return self
 | 
			
		||||
     */
 | 
			
		||||
    private function calcTaxesAutomatically()
 | 
			
		||||
    private function calcTaxesAutomatically(): self 
 | 
			
		||||
    {
 | 
			
		||||
        
 | 
			
		||||
        if($this->invoice->company->tax_all_products || $this->item->tax_id != ''){
 | 
			
		||||
            $this->rule->run();
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
 | 
			
		||||
            $this->rule->taxByType($this->item->tax_id);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $this->item->tax_name1 = $this->rule->tax_name1;
 | 
			
		||||
        $this->item->tax_rate1 = $this->rule->tax_rate1;
 | 
			
		||||
 | 
			
		||||
        $this->item->tax_name2 = $this->rule->tax_name2;
 | 
			
		||||
        $this->item->tax_rate2 = $this->rule->tax_rate2;
 | 
			
		||||
 | 
			
		||||
        $this->item->tax_name3 = $this->rule->tax_name3;
 | 
			
		||||
        $this->item->tax_rate3 = $this->rule->tax_rate3;
 | 
			
		||||
 | 
			
		||||
        return $this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function calcTaxes()
 | 
			
		||||
    {
 | 
			
		||||
        if($this->calc_tax)
 | 
			
		||||
            $this->calcTaxesAutomatically();
 | 
			
		||||
 | 
			
		||||
        $item_tax = 0;
 | 
			
		||||
 | 
			
		||||
        $amount = $this->item->line_total - ($this->item->line_total * ($this->invoice->discount / 100));
 | 
			
		||||
 | 
			
		||||
@ -142,6 +142,10 @@ use Laracasts\Presenter\PresentableTrait;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Company> $companies
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyUser> $company_users
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\User> $users
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankIntegration> $bank_integrations
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Company> $companies
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyUser> $company_users
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\User> $users
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class Account extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -35,6 +35,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankSubaccount> $bank_subaccounts
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankSubaccount> $bank_subaccounts
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankSubaccount> $bank_subaccounts
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankSubaccount> $bank_subaccounts
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class BankAccount extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -78,6 +78,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankTransaction> $transactions
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankTransaction> $transactions
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankTransaction> $transactions
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankTransaction> $transactions
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class BankIntegration extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -221,6 +221,25 @@ use Laracasts\Presenter\PresentableTrait;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
 | 
			
		||||
 * @property int $is_tax_exempt
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $gateway_tokens
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $primary_contact
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Project> $projects
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringExpense> $recurring_expenses
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
 | 
			
		||||
 * @method static \Illuminate\Database\Eloquent\Builder|Client whereIsTaxExempt($value)
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class Client extends BaseModel implements HasLocalePreference
 | 
			
		||||
 | 
			
		||||
@ -138,6 +138,11 @@ use Laracasts\Presenter\PresentableTrait;
 | 
			
		||||
 * @property-read \Illuminate\Notifications\DatabaseNotificationCollection<int, \Illuminate\Notifications\DatabaseNotification> $notifications
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\QuoteInvitation> $quote_invitations
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $recurring_invoice_invitations
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CreditInvitation> $credit_invitations
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\InvoiceInvitation> $invoice_invitations
 | 
			
		||||
 * @property-read \Illuminate\Notifications\DatabaseNotificationCollection<int, \Illuminate\Notifications\DatabaseNotification> $notifications
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\QuoteInvitation> $quote_invitations
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $recurring_invoice_invitations
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class ClientContact extends Authenticatable implements HasLocalePreference
 | 
			
		||||
 | 
			
		||||
@ -420,6 +420,50 @@ use Laracasts\Presenter\PresentableTrait;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\User> $users
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Vendor> $vendors
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Webhook> $webhooks
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $all_activities
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $all_documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankIntegration> $bank_integrations
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankTransactionRule> $bank_transaction_rules
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankTransaction> $bank_transactions
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $client_contacts
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $client_gateway_tokens
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyGateway> $company_gateways
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyUser> $company_users
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Design> $designs
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ExpenseCategory> $expense_categories
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\GroupSetting> $group_settings
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\GroupSetting> $groups
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PaymentTerm> $payment_terms
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Product> $products
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Project> $projects
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PurchaseOrder> $purchase_orders
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringExpense> $recurring_expenses
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Scheduler> $schedulers
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Subscription> $subscriptions
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_log_relation
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Scheduler> $task_schedulers
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\TaskStatus> $task_statuses
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\TaxRate> $tax_rates
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyToken> $tokens
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyToken> $tokens_hashed
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Design> $user_designs
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PaymentTerm> $user_payment_terms
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\User> $users
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Vendor> $vendors
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Webhook> $webhooks
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class Company extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -95,6 +95,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $client_gateway_tokens
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $client_gateway_tokens
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $client_gateway_tokens
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $client_gateway_tokens
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class CompanyGateway extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -76,6 +76,9 @@ use Illuminate\Database\Eloquent\SoftDeletes;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyToken> $token
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyToken> $tokens
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\User> $users
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyToken> $token
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyToken> $tokens
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\User> $users
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class CompanyUser extends Pivot
 | 
			
		||||
 | 
			
		||||
@ -206,6 +206,13 @@ use Laracasts\Presenter\PresentableTrait;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CreditInvitation> $invitations
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CreditInvitation> $invitations
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class Credit extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -133,6 +133,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class Expense extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -31,6 +31,7 @@ namespace App\Models;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PaymentType> $payment_methods
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PaymentType> $payment_methods
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PaymentType> $payment_methods
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PaymentType> $payment_methods
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class GatewayType extends StaticModel
 | 
			
		||||
 | 
			
		||||
@ -60,6 +60,8 @@ use Illuminate\Database\Eloquent\SoftDeletes;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class GroupSetting extends StaticModel
 | 
			
		||||
 | 
			
		||||
@ -232,6 +232,15 @@ use Laracasts\Presenter\PresentableTrait;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\InvoiceInvitation> $invitations
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\InvoiceInvitation> $invitations
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class Invoice extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -147,6 +147,11 @@ use Illuminate\Database\Eloquent\SoftDeletes;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Paymentable> $paymentables
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Paymentable> $paymentables
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class Payment extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -101,6 +101,7 @@ use League\CommonMark\CommonMarkConverter;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxId($value)
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class Product extends BaseModel
 | 
			
		||||
@ -113,7 +114,7 @@ class Product extends BaseModel
 | 
			
		||||
    public const PRODUCT_TYPE_PHYSICAL = 1;
 | 
			
		||||
    public const PRODUCT_TYPE_SERVICE = 2;
 | 
			
		||||
    public const PRODUCT_TYPE_DIGITAL = 3;
 | 
			
		||||
    public const PRODUCT_TYPE_FREIGHT = 4;
 | 
			
		||||
    public const PRODUCT_TYPE_SHIPPING = 4;
 | 
			
		||||
    public const PRODUCT_TAX_EXEMPT = 5;
 | 
			
		||||
 | 
			
		||||
    protected $fillable = [
 | 
			
		||||
 | 
			
		||||
@ -78,6 +78,8 @@ use Laracasts\Presenter\PresentableTrait;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class Project extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -31,6 +31,7 @@ use App\Utils\Traits\MakesHash;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class Proposal extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -198,6 +198,12 @@ use Illuminate\Support\Facades\Storage;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PurchaseOrderInvitation> $invitations
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PurchaseOrderInvitation> $invitations
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class PurchaseOrder extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -193,6 +193,10 @@ use Laracasts\Presenter\PresentableTrait;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\QuoteInvitation> $invitations
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\QuoteInvitation> $invitations
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class Quote extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -142,6 +142,7 @@ use Illuminate\Support\Carbon;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class RecurringExpense extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -194,6 +194,11 @@ use Laracasts\Presenter\PresentableTrait;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $invitations
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $invitations
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class RecurringInvoice extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -186,6 +186,11 @@ use Laracasts\Presenter\PresentableTrait;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringQuoteInvitation> $invitations
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringQuoteInvitation> $invitations
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class RecurringQuote extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -94,6 +94,7 @@ use Illuminate\Support\Carbon;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class Task extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -160,6 +160,13 @@ use Laracasts\Presenter\PresentableTrait;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Notifications\DatabaseNotificationCollection<int, \Illuminate\Notifications\DatabaseNotification> $notifications
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyToken> $tokens
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Company> $companies
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyUser> $company_users
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Notifications\DatabaseNotificationCollection<int, \Illuminate\Notifications\DatabaseNotification> $notifications
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyToken> $tokens
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class User extends Authenticatable implements MustVerifyEmail
 | 
			
		||||
 | 
			
		||||
@ -116,6 +116,10 @@ use Laracasts\Presenter\PresentableTrait;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\VendorContact> $contacts
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\VendorContact> $primary_contact
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\VendorContact> $contacts
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\VendorContact> $primary_contact
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class Vendor extends BaseModel
 | 
			
		||||
 | 
			
		||||
@ -116,6 +116,8 @@ use Laracasts\Presenter\PresentableTrait;
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PurchaseOrderInvitation> $purchase_order_invitations
 | 
			
		||||
 * @property-read \Illuminate\Notifications\DatabaseNotificationCollection<int, \Illuminate\Notifications\DatabaseNotification> $notifications
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PurchaseOrderInvitation> $purchase_order_invitations
 | 
			
		||||
 * @property-read \Illuminate\Notifications\DatabaseNotificationCollection<int, \Illuminate\Notifications\DatabaseNotification> $notifications
 | 
			
		||||
 * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PurchaseOrderInvitation> $purchase_order_invitations
 | 
			
		||||
 * @mixin \Eloquent
 | 
			
		||||
 */
 | 
			
		||||
class VendorContact extends Authenticatable implements HasLocalePreference
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,30 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
use Illuminate\Database\Migrations\Migration;
 | 
			
		||||
use Illuminate\Database\Schema\Blueprint;
 | 
			
		||||
use Illuminate\Support\Facades\Schema;
 | 
			
		||||
 | 
			
		||||
return new class extends Migration
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Run the migrations.
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function up()
 | 
			
		||||
    {
 | 
			
		||||
        Schema::table('clients', function (Blueprint $table) {
 | 
			
		||||
            $table->boolean('is_tax_exempt')->default(false);
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Reverse the migrations.
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function down()
 | 
			
		||||
    {
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@ -86,6 +86,12 @@ class SumTaxTest extends TestCase
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCalcLogic()
 | 
			
		||||
    {
 | 
			
		||||
        $this->company->calculate_taxes = true;
 | 
			
		||||
        $this->company->tax_all_products = true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testTaxOnCompany()
 | 
			
		||||
    {
 | 
			
		||||
        
 | 
			
		||||
@ -148,23 +154,9 @@ class SumTaxTest extends TestCase
 | 
			
		||||
    {
 | 
			
		||||
        $sum = 
 | 
			
		||||
            $this->response->stateSalesTax +
 | 
			
		||||
            // $this->response['stateUseTax'] +
 | 
			
		||||
            $this->response->citySalesTax +
 | 
			
		||||
            // $this->response['cityUseTax'] +
 | 
			
		||||
            $this->response->countySalesTax +
 | 
			
		||||
            // $this->response['countyUseTax'] +
 | 
			
		||||
            $this->response->districtSalesTax;
 | 
			
		||||
            // // $this->response['districtUseTax'] +
 | 
			
		||||
            // $this->response['district1SalesTax'] +
 | 
			
		||||
            // // $this->response['district1UseTax'] +
 | 
			
		||||
            // $this->response['district2SalesTax'] +
 | 
			
		||||
            // // $this->response['district2UseTax'] +
 | 
			
		||||
            // $this->response['district3SalesTax'] +
 | 
			
		||||
            // // $this->response['district3UseTax'] +
 | 
			
		||||
            // $this->response['district4SalesTax'] +
 | 
			
		||||
            // // $this->response['district4UseTax'] +
 | 
			
		||||
            // $this->response['district5SalesTax'];
 | 
			
		||||
            // $this->response['district5UseTax'];
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(0.0875, $sum);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user