PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.5.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.5.0
4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Models / Invoice.php
surecart / app / src / Models Last commit date
Blocks 2 months ago Concerns 6 months ago Traits 2 weeks ago Wordpress 1 year ago AbandonedCheckout.php 1 year ago AbandonedCheckoutProtocol.php 3 years ago Account.php 10 months ago AccountPortalSession.php 3 years ago Activation.php 1 year ago Affiliation.php 1 year ago AffiliationProduct.php 1 year ago AffiliationProtocol.php 2 years ago AffiliationRequest.php 1 year ago ApiToken.php 6 months ago AutoFee.php 5 months ago AutoFeeProtocol.php 5 months ago BalanceTransaction.php 1 year ago Batch.php 3 days ago Brand.php 4 months ago BulkAction.php 2 years ago Bump.php 1 year ago BuyLink.php 2 years ago CancellationAct.php 1 year ago CancellationReason.php 3 years ago Charge.php 9 months ago Checkout.php 2 months ago Click.php 1 year ago Collection.php 3 months ago CommissionStructure.php 2 years ago Component.php 4 months ago Coupon.php 2 months ago Customer.php 2 weeks ago CustomerLink.php 3 years ago CustomerNotificationProtocol.php 3 years ago CustomerPortalProtocol.php 1 year ago DatabaseModel.php 2 months ago Discount.php 1 year ago DisplayCurrency.php 1 year ago Dispute.php 9 months ago Download.php 3 years ago Event.php 3 years ago Export.php 2 years ago ExternalApiModel.php 3 months ago Fee.php 1 year ago Form.php 3 years ago Fulfillment.php 1 year ago FulfillmentItem.php 1 year ago GalleryItem.php 9 months ago GalleryItemAttachment.php 5 months ago GalleryItemImageAttachment.php 3 months ago GalleryItemMedia.php 1 year ago GalleryItemProductMedia.php 1 month ago GalleryItemVideoAttachment.php 3 months ago Import.php 6 months ago ImportRow.php 2 months ago IncomingWebhook.php 1 year ago Integration.php 2 years ago IntegrationCatalog.php 3 days ago Invoice.php 1 year ago License.php 1 year ago LineItem.php 9 months ago ManualPaymentMethod.php 1 year ago Media.php 1 month ago Model.php 3 days ago ModelInterface.php 3 years ago Order.php 2 weeks ago OrderProtocol.php 3 years ago ParcelTemplate.php 3 months ago PaymentFailure.php 1 year ago PaymentInstrument.php 2 months ago PaymentIntent.php 1 year ago PaymentMethod.php 1 year ago Payout.php 1 year ago PayoutGroup.php 2 years ago Period.php 1 year ago PlatformFee.php 1 year ago PortalSession.php 3 years ago Price.php 7 months ago Processor.php 1 year ago Product.php 3 days ago ProductCollection.php 1 year ago ProductCollectionImport.php 6 months ago ProductGroup.php 1 year ago ProductImport.php 6 months ago ProductMedia.php 4 months ago Promotion.php 1 year ago ProvisionalAccount.php 2 months ago Purchase.php 2 years ago Referral.php 1 year ago ReferralItem.php 2 years ago Refund.php 1 year ago RefundItem.php 1 year ago RegisteredWebhook.php 2 months ago ReturnItem.php 2 years ago ReturnReason.php 2 years ago ReturnRequest.php 1 year ago Review.php 4 months ago ReviewProtocol.php 4 months ago RuleSchema.php 5 months ago ServiceFee.php 1 year ago ShippingChoice.php 1 year ago ShippingMethod.php 3 years ago ShippingProfile.php 3 years ago ShippingProtocol.php 3 years ago ShippingRate.php 3 years ago ShippingZone.php 3 years ago Statistic.php 3 years ago Subscription.php 2 weeks ago SubscriptionProtocol.php 3 years ago Swap.php 1 year ago TaxOverride.php 2 years ago TaxProtocol.php 3 years ago TaxRegistration.php 1 year ago TaxZone.php 3 years ago Upload.php 3 years ago Upsell.php 1 year ago UpsellFunnel.php 1 year ago User.php 1 month ago Variant.php 3 days ago VariantOption.php 2 years ago VariantOptionValue.php 1 year ago VariantValue.php 2 years ago VerificationCode.php 3 years ago Webhook.php 1 year ago WebhookRegistration.php 2 years ago
Invoice.php
168 lines
1 <?php
2
3 namespace SureCart\Models;
4
5 use SureCart\Models\Traits\CanResendNotifications;
6 use SureCart\Models\Traits\HasCheckout;
7 use SureCart\Models\Traits\HasDates;
8 use SureCart\Support\TimeDate;
9
10 /**
11 * Invoice model
12 */
13 class Invoice extends Model {
14 use HasCheckout;
15 use HasDates;
16 use CanResendNotifications;
17
18 /**
19 * Rest API endpoint
20 *
21 * @var string
22 */
23 protected $endpoint = 'invoices';
24
25 /**
26 * Object name
27 *
28 * @var string
29 */
30 protected $object_name = 'invoice';
31
32 /**
33 * Need to pass the processor type on create
34 *
35 * @param array $attributes Optional attributes.
36 * @param string $type stripe, paypal, etc.
37 */
38 public function __construct( $attributes = [], $type = '' ) {
39 $this->processor_type = $type;
40 parent::__construct( $attributes );
41 }
42
43 /**
44 * Get the checkout page URL for the invoice.
45 *
46 * @return string
47 */
48 public function getCheckoutUrlAttribute(): string {
49 return add_query_arg( 'checkout_id', $this->checkout_id, \SureCart::pages()->url( 'checkout' ) );
50 }
51
52 /**
53 * Make draft invoice.
54 *
55 * @param string|null $id Invoice ID.
56 *
57 * @return self|\WP_Error
58 */
59 protected function makeDraft( $id = null ) {
60 if ( $id ) {
61 $this->setAttribute( 'id', $id );
62 }
63
64 if ( $this->fireModelEvent( 'drafting' ) === false ) {
65 return false;
66 }
67
68 if ( empty( $this->attributes['id'] ) ) {
69 return new \WP_Error( 'not_saved', __( 'Please create the invoice first.', 'surecart' ) );
70 }
71
72 $drafted = \SureCart::request(
73 $this->endpoint . '/' . $this->attributes['id'] . '/make_draft',
74 [
75 'method' => 'PATCH',
76 'query' => $this->query,
77 ]
78 );
79
80 if ( is_wp_error( $drafted ) ) {
81 return $drafted;
82 }
83
84 $this->resetAttributes();
85
86 $this->fill( $drafted );
87
88 $this->fireModelEvent( 'drafted' );
89
90 return $this;
91 }
92
93 /**
94 * Open invoice.
95 *
96 * @param string|null $id Invoice ID.
97 *
98 * @return self|\WP_Error
99 */
100 protected function open( $id = null ) {
101 if ( $id ) {
102 $this->setAttribute( 'id', $id );
103 }
104
105 if ( $this->fireModelEvent( 'opening' ) === false ) {
106 return $this;
107 }
108
109 if ( empty( $this->attributes['id'] ) ) {
110 return new \WP_Error( 'not_saved', __( 'Please create the invoice first.', 'surecart' ) );
111 }
112
113 $opened = \SureCart::request(
114 $this->endpoint . '/' . $this->attributes['id'] . '/open',
115 [
116 'method' => 'PATCH',
117 'query' => $this->query,
118 ]
119 );
120
121 if ( is_wp_error( $opened ) ) {
122 return $opened;
123 }
124
125 $this->resetAttributes();
126 $this->fill( $opened );
127 $this->fireModelEvent( 'opened' );
128
129 return $this;
130 }
131
132 /**
133 * Get the due date display.
134 *
135 * @return string
136 */
137 public function getDueDateDateAttribute() {
138 return ! empty( $this->due_date ) ? TimeDate::formatDate( $this->due_date ) : '';
139 }
140
141 /**
142 * Get the due date time display.
143 *
144 * @return string
145 */
146 public function getDueDateTimeDateAttribute() {
147 return ! empty( $this->due_date ) ? TimeDate::formatDateAndTime( $this->due_date ) : '';
148 }
149
150 /**
151 * Get the issue date display.
152 *
153 * @return string
154 */
155 public function getIssueDateDateAttribute() {
156 return ! empty( $this->issue_date ) ? TimeDate::formatDate( $this->issue_date ) : '';
157 }
158
159 /**
160 * Get the issue date time display.
161 *
162 * @return string
163 */
164 public function getIssueDateTimeDateAttribute() {
165 return ! empty( $this->issue_date ) ? TimeDate::formatDateAndTime( $this->issue_date ) : '';
166 }
167 }
168