mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-03 22:47:32 -05:00 
			
		
		
		
	Merge pull request #6255 from turbo124/v5-develop
FIxes for Hosted Channel
This commit is contained in:
		
						commit
						313dbd4da3
					
				@ -45,14 +45,15 @@ class ClientMap
 | 
			
		||||
            26 => 'client.vat_number',
 | 
			
		||||
            27 => 'client.id_number',
 | 
			
		||||
            28 => 'client.public_notes',
 | 
			
		||||
            29 => 'contact.first_name',
 | 
			
		||||
            30 => 'contact.last_name',
 | 
			
		||||
            31 => 'contact.email',
 | 
			
		||||
            32 => 'contact.phone',
 | 
			
		||||
            33 => 'contact.custom_value1',
 | 
			
		||||
            34 => 'contact.custom_value2',
 | 
			
		||||
            35 => 'contact.custom_value3',
 | 
			
		||||
            36 => 'contact.custom_value4',
 | 
			
		||||
            29 => 'client.phone',
 | 
			
		||||
            30 => 'contact.first_name',
 | 
			
		||||
            31 => 'contact.last_name',
 | 
			
		||||
            32 => 'contact.email',
 | 
			
		||||
            33 => 'contact.phone',
 | 
			
		||||
            34 => 'contact.custom_value1',
 | 
			
		||||
            35 => 'contact.custom_value2',
 | 
			
		||||
            36 => 'contact.custom_value3',
 | 
			
		||||
            37 => 'contact.custom_value4',
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -88,14 +89,15 @@ class ClientMap
 | 
			
		||||
            26 => 'texts.vat_number',
 | 
			
		||||
            27 => 'texts.id_number',
 | 
			
		||||
            28 => 'texts.public_notes',
 | 
			
		||||
            29 => 'texts.first_name',
 | 
			
		||||
            30 => 'texts.last_name',
 | 
			
		||||
            31 => 'texts.email',
 | 
			
		||||
            32 => 'texts.phone',
 | 
			
		||||
            33 => 'texts.custom_value',
 | 
			
		||||
            29 => 'texts.client_phone',
 | 
			
		||||
            30 => 'texts.first_name',
 | 
			
		||||
            31 => 'texts.last_name',
 | 
			
		||||
            32 => 'texts.email',
 | 
			
		||||
            33 => 'texts.phone',
 | 
			
		||||
            34 => 'texts.custom_value',
 | 
			
		||||
            35 => 'texts.custom_value',
 | 
			
		||||
            36 => 'texts.custom_value',
 | 
			
		||||
            37 => 'texts.custom_value',
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,7 @@ class ExpenseTransformer extends BaseTransformer {
 | 
			
		||||
			'currency_id'           => $this->getCurrencyByCode( $data, 'expense.currency_id' ),
 | 
			
		||||
			'vendor_id'             => isset( $data['expense.vendor'] ) ? $this->getVendorId( $data['expense.vendor'] ) : null,
 | 
			
		||||
			'client_id'             => isset( $data['expense.client'] ) ? $this->getClientId( $data['expense.client'] ) : null,
 | 
			
		||||
			'expense_date'          => isset( $data['expense.date'] ) ? date( 'Y-m-d', strtotime( $data['expense.date'] ) ) : null,
 | 
			
		||||
			'date'		            => isset( $data['expense.date'] ) ? date( 'Y-m-d', strtotime( $data['expense.date'] ) ) : null,
 | 
			
		||||
			'public_notes'          => $this->getString( $data, 'expense.public_notes' ),
 | 
			
		||||
			'private_notes'         => $this->getString( $data, 'expense.private_notes' ),
 | 
			
		||||
			'expense_category_id'   => isset( $data['expense.category'] ) ? $this->getExpenseCategoryId( $data['expense.category'] ) : null,
 | 
			
		||||
 | 
			
		||||
@ -192,6 +192,8 @@ class Import implements ShouldQueue
 | 
			
		||||
 | 
			
		||||
        nlog("Starting Migration");
 | 
			
		||||
        nlog($this->user->email);
 | 
			
		||||
        info("Starting Migration");
 | 
			
		||||
        info($this->user->email);
 | 
			
		||||
        
 | 
			
		||||
        auth()->login($this->user, false);
 | 
			
		||||
        auth()->user()->setCompany($this->company);
 | 
			
		||||
@ -1239,6 +1241,7 @@ class Import implements ShouldQueue
 | 
			
		||||
 | 
			
		||||
                $try_quote = false;
 | 
			
		||||
                $exception = false;
 | 
			
		||||
                $entity = false;
 | 
			
		||||
                
 | 
			
		||||
                try{
 | 
			
		||||
                    $invoice_id = $this->transformId('invoices', $resource['invoice_id']);
 | 
			
		||||
 | 
			
		||||
@ -59,7 +59,7 @@ class MultiDB
 | 
			
		||||
        $current_db = config('database.default');  
 | 
			
		||||
 | 
			
		||||
        foreach (self::$dbs as $db) {
 | 
			
		||||
            if (Company::on($db)->whereSubdomain($subdomain)->get()->count() >= 1) {
 | 
			
		||||
            if (Company::on($db)->whereSubdomain($subdomain)->exists()) {
 | 
			
		||||
                self::setDb($current_db);
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
@ -73,12 +73,12 @@ class MultiDB
 | 
			
		||||
    public static function checkUserEmailExists($email) : bool
 | 
			
		||||
    {
 | 
			
		||||
        if (! config('ninja.db.multi_db_enabled')) 
 | 
			
		||||
            return User::where(['email' => $email])->get()->count() >= 1 ?? false; // true >= 1 emails found / false -> == emails found
 | 
			
		||||
            return User::where(['email' => $email])->exists(); // true >= 1 emails found / false -> == emails found
 | 
			
		||||
        
 | 
			
		||||
        $current_db = config('database.default');  
 | 
			
		||||
 | 
			
		||||
        foreach (self::$dbs as $db) {
 | 
			
		||||
            if (User::on($db)->where(['email' => $email])->get()->count() >= 1) { // if user already exists, validation will fail
 | 
			
		||||
            if (User::on($db)->where(['email' => $email])->exists()) { // if user already exists, validation will fail
 | 
			
		||||
                self::setDb($current_db);
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
@ -196,7 +196,7 @@ class MultiDB
 | 
			
		||||
        //multi-db active
 | 
			
		||||
        foreach (self::$dbs as $db) {
 | 
			
		||||
            
 | 
			
		||||
            if (User::on($db)->where('email', $email)->count() >= 1){ 
 | 
			
		||||
            if (User::on($db)->where('email', $email)->exists()){ 
 | 
			
		||||
                self::setDb($db);
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
@ -214,7 +214,7 @@ class MultiDB
 | 
			
		||||
        //multi-db active
 | 
			
		||||
        foreach (self::$dbs as $db) {
 | 
			
		||||
            
 | 
			
		||||
            if (Document::on($db)->where('hash', $hash)->count() >= 1){ 
 | 
			
		||||
            if (Document::on($db)->where('hash', $hash)->exists()){ 
 | 
			
		||||
                self::setDb($db);
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@ -62,7 +62,7 @@ class SupportMessageSent extends Mailable
 | 
			
		||||
        else
 | 
			
		||||
            $subject = "Self Host {$user->present()->name} - [{$plan} - {$company->db}]";
 | 
			
		||||
 | 
			
		||||
        return $this->from(config('mail.from.address'), config('mail.from.name')) 
 | 
			
		||||
        return $this->from(config('mail.from.address'), $user->present()->name()) 
 | 
			
		||||
                ->replyTo($user->email, $user->present()->name())
 | 
			
		||||
                ->subject($subject)
 | 
			
		||||
                ->view('email.support.message', [
 | 
			
		||||
 | 
			
		||||
@ -14,6 +14,7 @@ namespace App\PaymentDrivers\WePay;
 | 
			
		||||
use App\Exceptions\PaymentFailed;
 | 
			
		||||
use App\Jobs\Mail\PaymentFailureMailer;
 | 
			
		||||
use App\Jobs\Util\SystemLogger;
 | 
			
		||||
use App\Models\GatewayType;
 | 
			
		||||
use App\Models\PaymentType;
 | 
			
		||||
use App\Models\SystemLog;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -173,9 +173,15 @@ class HtmlEngine
 | 
			
		||||
            $data['$balance_due'] = ['value' => Number::formatMoney($this->entity->partial, $this->client) ?: ' ', 'label' => ctrans('texts.balance_due')];
 | 
			
		||||
            $data['$balance_due_raw'] = ['value' => $this->entity->partial, 'label' => ctrans('texts.balance_due')];
 | 
			
		||||
        } else {
 | 
			
		||||
            $data['$balance_due'] = ['value' => Number::formatMoney($this->entity->balance, $this->client) ?: ' ', 'label' => ctrans('texts.balance_due')];
 | 
			
		||||
            $data['$balance_due_raw'] = ['value' => $this->entity->balance, 'label' => ctrans('texts.balance_due')];
 | 
			
		||||
 | 
			
		||||
            if($this->entity->status_id == 1){
 | 
			
		||||
                $data['$balance_due'] = ['value' => Number::formatMoney($this->entity->amount, $this->client) ?: ' ', 'label' => ctrans('texts.balance_due')];
 | 
			
		||||
                $data['$balance_due_raw'] = ['value' => $this->entity->amount, 'label' => ctrans('texts.balance_due')];
 | 
			
		||||
            }
 | 
			
		||||
            else{
 | 
			
		||||
                $data['$balance_due'] = ['value' => Number::formatMoney($this->entity->balance, $this->client) ?: ' ', 'label' => ctrans('texts.balance_due')];
 | 
			
		||||
                $data['$balance_due_raw'] = ['value' => $this->entity->balance, 'label' => ctrans('texts.balance_due')];                
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $data['$quote.balance_due'] = &$data['$balance_due'];
 | 
			
		||||
 | 
			
		||||
@ -1957,3 +1957,5 @@ INSERT INTO `migrations` VALUES (78,'2021_05_30_100933_make_documents_assigned_u
 | 
			
		||||
INSERT INTO `migrations` VALUES (79,'2021_06_10_221012_add_ninja_portal_column_to_accounts_table',2);
 | 
			
		||||
INSERT INTO `migrations` VALUES (80,'2021_06_24_095942_payments_table_currency_nullable',2);
 | 
			
		||||
INSERT INTO `migrations` VALUES (81,'2021_06_24_115919_update_designs',2);
 | 
			
		||||
INSERT INTO `migrations` VALUES (82,'2021_07_08_115919_update_designs',3);
 | 
			
		||||
INSERT INTO `migrations` VALUES (83,'2021_07_10_085821_activate_payfast_payment_driver',3);
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										13404
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										13404
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -1,2 +1,2 @@
 | 
			
		||||
/*! For license information please see authorize-authorize-card.js.LICENSE.txt */
 | 
			
		||||
!function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=1)}({1:function(e,t,n){e.exports=n("6vDv")},"6vDv":function(e,t){function n(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}new(function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.publicKey=t,this.loginId=n,this.cardHolderName=document.getElementById("cardholder_name"),this.cardButton=document.getElementById("card_button")}var t,r,a;return t=e,(r=[{key:"handleAuthorization",value:function(){var e=$("#my-card"),t={};t.clientKey=this.publicKey,t.apiLoginID=this.loginId;var n={};n.cardNumber=e.CardJs("cardNumber"),n.month=e.CardJs("expiryMonth"),n.year=e.CardJs("expiryYear"),n.cardCode=document.getElementById("cvv").value;var r={};return r.authData=t,r.cardData=n,document.getElementById("card_button").disabled=!0,document.querySelector("#card_button > svg").classList.remove("hidden"),document.querySelector("#card_button > span").classList.add("hidden"),Accept.dispatchData(r,this.responseHandler),!1}},{key:"responseHandler",value:function(e){return"Error"===e.messages.resultCode?($("#errors").show().html("<p>"+e.messages.message[0].code+": "+e.messages.message[0].text+"</p>"),document.getElementById("card_button").disabled=!1,document.querySelector("#card_button > svg").classList.add("hidden"),document.querySelector("#card_button > span").classList.remove("hidden")):"Ok"===e.messages.resultCode&&(document.getElementById("dataDescriptor").value=e.opaqueData.dataDescriptor,document.getElementById("dataValue").value=e.opaqueData.dataValue,document.getElementById("server_response").submit()),!1}},{key:"handle",value:function(){var e=this;return this.cardButton.addEventListener("click",(function(){e.cardButton.disabled=!e.cardButton.disabled,e.handleAuthorization()})),this}}])&&n(t.prototype,r),a&&n(t,a),e}())(document.querySelector('meta[name="authorize-public-key"]').content,document.querySelector('meta[name="authorize-login-id"]').content).handle()}});
 | 
			
		||||
!function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=1)}({1:function(e,t,n){e.exports=n("6vDv")},"6vDv":function(e,t){function n(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}new(function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.publicKey=t,this.loginId=n,this.cardHolderName=document.getElementById("cardholder_name"),this.cardButton=document.getElementById("card_button")}var t,r,a;return t=e,(r=[{key:"handleAuthorization",value:function(){var e=$("#my-card"),t={};t.clientKey=this.publicKey,t.apiLoginID=this.loginId;var n={};n.cardNumber=e.CardJs("cardNumber").replace(/[^\d]/g,""),n.month=e.CardJs("expiryMonth"),n.year=e.CardJs("expiryYear"),n.cardCode=document.getElementById("cvv").value;var r={};return r.authData=t,r.cardData=n,document.getElementById("card_button").disabled=!0,document.querySelector("#card_button > svg").classList.remove("hidden"),document.querySelector("#card_button > span").classList.add("hidden"),Accept.dispatchData(r,this.responseHandler),!1}},{key:"responseHandler",value:function(e){return"Error"===e.messages.resultCode?($("#errors").show().html("<p>"+e.messages.message[0].code+": "+e.messages.message[0].text+"</p>"),document.getElementById("card_button").disabled=!1,document.querySelector("#card_button > svg").classList.add("hidden"),document.querySelector("#card_button > span").classList.remove("hidden")):"Ok"===e.messages.resultCode&&(document.getElementById("dataDescriptor").value=e.opaqueData.dataDescriptor,document.getElementById("dataValue").value=e.opaqueData.dataValue,document.getElementById("server_response").submit()),!1}},{key:"handle",value:function(){var e=this;return this.cardButton.addEventListener("click",(function(){e.cardButton.disabled=!e.cardButton.disabled,e.handleAuthorization()})),this}}])&&n(t.prototype,r),a&&n(t,a),e}())(document.querySelector('meta[name="authorize-public-key"]').content,document.querySelector('meta[name="authorize-login-id"]').content).handle()}});
 | 
			
		||||
@ -4,7 +4,7 @@
 | 
			
		||||
    "/js/clients/invoices/action-selectors.js": "/js/clients/invoices/action-selectors.js?id=a09bb529b8e1826f13b4",
 | 
			
		||||
    "/js/clients/invoices/payment.js": "/js/clients/invoices/payment.js?id=8ce8955ba775ea5f47d1",
 | 
			
		||||
    "/js/clients/linkify-urls.js": "/js/clients/linkify-urls.js?id=0dc8c34010d09195d2f7",
 | 
			
		||||
    "/js/clients/payment_methods/authorize-authorize-card.js": "/js/clients/payment_methods/authorize-authorize-card.js?id=206d7de4ac97612980ff",
 | 
			
		||||
    "/js/clients/payment_methods/authorize-authorize-card.js": "/js/clients/payment_methods/authorize-authorize-card.js?id=c4cae3b736c9b186deec",
 | 
			
		||||
    "/js/clients/payment_methods/wepay-bank-account.js": "/js/clients/payment_methods/wepay-bank-account.js?id=8fea0be371d430064a89",
 | 
			
		||||
    "/js/clients/payments/authorize-credit-card-payment.js": "/js/clients/payments/authorize-credit-card-payment.js?id=a376eff2227da398b0ba",
 | 
			
		||||
    "/js/clients/payments/braintree-credit-card.js": "/js/clients/payments/braintree-credit-card.js?id=81957e7cb1cb49f23b90",
 | 
			
		||||
 | 
			
		||||
@ -26,7 +26,7 @@ class AuthorizeAuthorizeCard {
 | 
			
		||||
        authData.apiLoginID = this.loginId;
 | 
			
		||||
 | 
			
		||||
        var cardData = {};
 | 
			
		||||
        cardData.cardNumber = myCard.CardJs('cardNumber');
 | 
			
		||||
        cardData.cardNumber = myCard.CardJs('cardNumber').replace(/[^\d]/g, '');
 | 
			
		||||
        cardData.month = myCard.CardJs('expiryMonth');
 | 
			
		||||
        cardData.year = myCard.CardJs('expiryYear');;
 | 
			
		||||
        cardData.cardCode = document.getElementById("cvv").value;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user