PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.2.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.2.1
4.7.0 4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.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 1 year ago Concerns 1 year ago Traits 1 year ago AbandonedCheckout.php 1 year ago AbandonedCheckoutProtocol.php 3 years ago Account.php 3 years ago AccountPortalSession.php 4 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 3 years ago BalanceTransaction.php 1 year ago Brand.php 4 years 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 1 year ago Checkout.php 1 year ago Click.php 1 year ago Collection.php 2 years ago CommissionStructure.php 2 years ago Component.php 4 years ago Coupon.php 1 year ago Customer.php 1 year ago CustomerLink.php 4 years ago CustomerNotificationProtocol.php 4 years ago CustomerPortalProtocol.php 1 year ago DatabaseModel.php 1 year ago Discount.php 1 year ago Download.php 4 years ago Event.php 4 years ago Export.php 2 years ago ExternalApiModel.php 1 year ago Form.php 3 years ago Fulfillment.php 1 year ago FulfillmentItem.php 1 year ago GalleryItem.php 1 year ago GalleryItemAttachment.php 1 year ago GalleryItemMedia.php 1 year ago GalleryItemProductMedia.php 1 year ago IncomingWebhook.php 1 year ago Integration.php 2 years ago IntegrationCatalog.php 1 year ago Invoice.php 1 year ago License.php 1 year ago LineItem.php 1 year ago ManualPaymentMethod.php 1 year ago Media.php 1 year ago Model.php 1 year ago ModelInterface.php 4 years ago Order.php 1 year ago OrderProtocol.php 4 years ago PaymentFailure.php 1 year ago PaymentInstrument.php 1 year ago PaymentIntent.php 4 years ago PaymentMethod.php 1 year ago Payout.php 1 year ago PayoutGroup.php 2 years ago Period.php 1 year ago PortalSession.php 4 years ago Price.php 1 year ago Processor.php 1 year ago Product.php 1 year ago ProductCollection.php 1 year ago ProductGroup.php 1 year ago ProductMedia.php 1 year ago Promotion.php 1 year ago ProvisionalAccount.php 2 years ago Purchase.php 2 years ago Referral.php 1 year ago ReferralItem.php 2 years ago Refund.php 1 year ago RegisteredWebhook.php 2 years ago ReturnItem.php 2 years ago ReturnReason.php 2 years ago ReturnRequest.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 4 years ago Subscription.php 1 year ago SubscriptionProtocol.php 4 years ago TaxOverride.php 2 years ago TaxProtocol.php 4 years ago TaxRegistration.php 1 year ago TaxZone.php 4 years ago Upload.php 4 years ago Upsell.php 1 year ago UpsellFunnel.php 1 year ago User.php 2 years ago Variant.php 1 year 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
166 lines
1 <?php
2
3 namespace SureCart\Models;
4
5 use SureCart\Models\Traits\HasCheckout;
6 use SureCart\Models\Traits\HasDates;
7 use SureCart\Support\TimeDate;
8
9 /**
10 * Invoice model
11 */
12 class Invoice extends Model {
13 use HasCheckout;
14 use HasDates;
15
16 /**
17 * Rest API endpoint
18 *
19 * @var string
20 */
21 protected $endpoint = 'invoices';
22
23 /**
24 * Object name
25 *
26 * @var string
27 */
28 protected $object_name = 'invoice';
29
30 /**
31 * Need to pass the processor type on create
32 *
33 * @param array $attributes Optional attributes.
34 * @param string $type stripe, paypal, etc.
35 */
36 public function __construct( $attributes = [], $type = '' ) {
37 $this->processor_type = $type;
38 parent::__construct( $attributes );
39 }
40
41 /**
42 * Get the checkout page URL for the invoice.
43 *
44 * @return string
45 */
46 public function getCheckoutUrlAttribute(): string {
47 return add_query_arg( 'checkout_id', $this->checkout_id, \SureCart::pages()->url( 'checkout' ) );
48 }
49
50 /**
51 * Make draft invoice.
52 *
53 * @param string|null $id Invoice ID.
54 *
55 * @return self|\WP_Error
56 */
57 protected function makeDraft( $id = null ) {
58 if ( $id ) {
59 $this->setAttribute( 'id', $id );
60 }
61
62 if ( $this->fireModelEvent( 'drafting' ) === false ) {
63 return false;
64 }
65
66 if ( empty( $this->attributes['id'] ) ) {
67 return new \WP_Error( 'not_saved', __( 'Please create the invoice first.', 'surecart' ) );
68 }
69
70 $drafted = \SureCart::request(
71 $this->endpoint . '/' . $this->attributes['id'] . '/make_draft',
72 [
73 'method' => 'PATCH',
74 'query' => $this->query,
75 ]
76 );
77
78 if ( is_wp_error( $drafted ) ) {
79 return $drafted;
80 }
81
82 $this->resetAttributes();
83
84 $this->fill( $drafted );
85
86 $this->fireModelEvent( 'drafted' );
87
88 return $this;
89 }
90
91 /**
92 * Open invoice.
93 *
94 * @param string|null $id Invoice ID.
95 *
96 * @return self|\WP_Error
97 */
98 protected function open( $id = null ) {
99 if ( $id ) {
100 $this->setAttribute( 'id', $id );
101 }
102
103 if ( $this->fireModelEvent( 'opening' ) === false ) {
104 return $this;
105 }
106
107 if ( empty( $this->attributes['id'] ) ) {
108 return new \WP_Error( 'not_saved', __( 'Please create the invoice first.', 'surecart' ) );
109 }
110
111 $opened = \SureCart::request(
112 $this->endpoint . '/' . $this->attributes['id'] . '/open',
113 [
114 'method' => 'PATCH',
115 'query' => $this->query,
116 ]
117 );
118
119 if ( is_wp_error( $opened ) ) {
120 return $opened;
121 }
122
123 $this->resetAttributes();
124 $this->fill( $opened );
125 $this->fireModelEvent( 'opened' );
126
127 return $this;
128 }
129
130 /**
131 * Get the due date display.
132 *
133 * @return string
134 */
135 public function getDueDateDateAttribute() {
136 return ! empty( $this->due_date ) ? TimeDate::formatDate( $this->due_date ) : '';
137 }
138
139 /**
140 * Get the due date time display.
141 *
142 * @return string
143 */
144 public function getDueDateTimeDateAttribute() {
145 return ! empty( $this->due_date ) ? TimeDate::formatDateAndTime( $this->due_date ) : '';
146 }
147
148 /**
149 * Get the issue date display.
150 *
151 * @return string
152 */
153 public function getIssueDateDateAttribute() {
154 return ! empty( $this->issue_date ) ? TimeDate::formatDate( $this->issue_date ) : '';
155 }
156
157 /**
158 * Get the issue date time display.
159 *
160 * @return string
161 */
162 public function getIssueDateTimeDateAttribute() {
163 return ! empty( $this->issue_date ) ? TimeDate::formatDateAndTime( $this->issue_date ) : '';
164 }
165 }
166