PluginProbe ʕ •ᴥ•ʔ
LatePoint – Calendar Booking Plugin for Appointments and Events / 5.4.2
LatePoint – Calendar Booking Plugin for Appointments and Events v5.4.2
5.6.5 5.6.4 5.6.3 5.6.2 5.6.1 5.6.0 5.5.2 5.5.1 5.5.0 5.4.2 trunk 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.1.8 5.1.9 5.1.91 5.1.92 5.1.93 5.1.94 5.2.0 5.2.1 5.2.10 5.2.11 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 5.3.0 5.3.1 5.3.2 5.4.0 5.4.1
latepoint / lib / views / orders / quick_edit.php
latepoint / lib / views / orders Last commit date
_balance_and_payments.php 1 year ago _full_summary.php 1 year ago _price_breakdown.php 1 year ago _table_body.php 3 months ago _transaction_box.php 1 year ago index.php 1 year ago quick_edit.php 9 months ago reload_balance_and_payments.php 1 year ago reload_price_breakdown.php 1 year ago view_order_log.php 1 year ago
quick_edit.php
330 lines
1 <?php
2 /**
3 * @var $order OsOrderModel
4 * @var $booking OsBookingModel
5 * @var $bundles OsBundleModel[]
6 * @var $services OsServiceModel[]
7 * @var $transactions OsTransactionModel[]
8 * @var $customers OsCustomerModel[]
9 * @var $order_bookings OsBookingModel[]
10 * @var $order_bundles OsBundleModel[]
11 * @var $preselected_booking OsBundleModel
12 * @var $preselected_order_item OsOrderItemModel
13 * @var $show_only_preselected_items bool
14 **/
15
16
17 if ( ! defined( 'ABSPATH' ) ) {
18 exit; // Exit if accessed directly
19 }
20
21
22 ?>
23
24
25 <div class="os-form-w quick-order-form-w <?php echo ( $order->is_new_record() ) ? 'is-new-order' : 'is-existing-order'; ?>"
26 data-refresh-route-name="<?php echo esc_attr( OsRouterHelper::build_route_name( 'orders', 'quick_edit' ) ); ?>">
27 <form action=""
28 data-route-name="<?php echo ( $order->is_new_record() ) ? esc_attr( OsRouterHelper::build_route_name( 'orders', 'create' ) ) : esc_attr( OsRouterHelper::build_route_name( 'orders', 'update' ) ); ?>"
29 class="order-quick-edit-form">
30 <div class="os-form-header">
31 <?php if ( $order->is_new_record() ) { ?>
32 <h2><?php esc_html_e( 'New Order', 'latepoint' ); ?></h2>
33 <?php } else { ?>
34 <h2><?php esc_html_e( 'Edit Order', 'latepoint' ); ?></h2>
35 <?php } ?>
36 <a href="#" class="latepoint-side-panel-close latepoint-side-panel-close-trigger"><i class="latepoint-icon latepoint-icon-x"></i></a>
37 </div>
38 <div class="os-form-content">
39 <?php if ( ! $order->is_new_record() ) { ?>
40 <div class="quick-booking-info">
41 <?php echo '<span>' . esc_html__( 'Order ID:', 'latepoint' ) . '</span><strong>' . esc_html( $order->id ) . '</strong>'; ?>
42 <?php echo '<span>' . esc_html__( 'Code:', 'latepoint' ) . '</span><strong>' . esc_html( $order->confirmation_code ) . '</strong>'; ?>
43 <?php echo '<a target="_blank" href="' . $order->manage_by_key_url( 'customer' ) . '"><i class="latepoint-icon latepoint-icon-link-2"></i>' . esc_html__( 'Share', 'latepoint' ) . '</a>'; ?>
44 <?php if ( OsAuthHelper::get_current_user()->has_capability( 'activity__view' ) ) {
45 echo '<a href="#" data-order-id="' . esc_attr( $order->id ) . '" data-route="' . esc_attr( OsRouterHelper::build_route_name( 'orders', 'view_order_log' ) ) . '" class="quick-order-form-view-log-btn"><i class="latepoint-icon latepoint-icon-clock"></i>' . esc_html__( 'History', 'latepoint' ) . '</a>';
46 } ?>
47 </div>
48 <?php } ?>
49 <div class="os-row">
50 <div class="os-col-6">
51 <?php echo OsFormHelper::select_field( 'order[status]', __( 'Order Status', 'latepoint' ), OsOrdersHelper::get_order_statuses_list(), $order->status, array( 'placeholder' => __( 'Set Status', 'latepoint' ) ) ); ?>
52 </div>
53 <div class="os-col-6">
54 <?php echo OsFormHelper::select_field( 'order[fulfillment_status]', __( 'Fulfillment Status', 'latepoint' ), OsOrdersHelper::get_fulfillment_statuses_list(), $order->fulfillment_status, array( 'placeholder' => __( 'Set Status', 'latepoint' ) ) ); ?>
55 </div>
56 </div>
57 <div class="os-row">
58 <div class="os-col-12">
59 <?php if ( ! empty( $order->customer_comment ) ) {
60 echo OsFormHelper::textarea_field( 'order[customer_comment]', __( 'Comment left by the customer', 'latepoint' ), $order->customer_comment, [
61 'rows' => 1,
62 'theme' => 'simple',
63 'placeholder' => ''
64 ] );
65 } ?>
66 </div>
67 </div>
68
69 <div class="order-items-info-w <?php if ( empty( $bundles ) ) {
70 echo 'no-bundles';
71 } ?> <?php if ( $show_only_preselected_items ) {
72 echo 'show-preselected-only';
73 } ?>">
74 <div class="os-form-sub-header">
75 <h3><?php echo OsCartsHelper::can_checkout_multiple_items() ? esc_html__( 'Order Items', 'latepoint' ) : esc_html__( 'Order Item', 'latepoint' ); ?></h3>
76 <div class="os-form-sub-header-actions">
77 <?php if ( OsCartsHelper::can_checkout_multiple_items() ) { ?>
78 <a href="#" data-add-label="<?php esc_attr_e( 'Add Another Item', 'latepoint' ); ?>" data-cancel-label="<?php esc_attr_e( 'Cancel', 'latepoint' ); ?>"
79 class="latepoint-btn latepoint-btn-sm latepoint-btn-link order-form-add-item-btn"
80 data-booking-form-route-name="<?php echo esc_attr( OsRouterHelper::build_route_name( 'orders', 'generate_booking_order_item_block' ) ); ?>"
81 data-bundle-form-route-name="<?php echo esc_attr( OsRouterHelper::build_route_name( 'orders', 'generate_bundle_order_item_block' ) ); ?>"
82 data-fold-booking-data-route-name="<?php echo esc_attr( OsRouterHelper::build_route_name( 'orders', 'fold_booking_data_form' ) ); ?>">
83 <i class="latepoint-icon latepoint-icon-plus"></i><span><?php esc_attr_e( 'Add Another Item', 'latepoint' ); ?></span>
84 </a>
85 <?php } ?>
86 </div>
87 </div>
88 <?php if ( ! empty( $bundles ) ) { ?>
89 <div class="new-order-item-list-bundles-wrapper">
90 <div class="centered-question-label"><?php esc_html_e( 'Select a bundle that you want to add', 'latepoint' ); ?></div>
91 <div class="new-order-item-list-bundles">
92 <?php
93 foreach ( $bundles as $bundle ) {
94 echo '<div class="new-order-item-list-bundle"
95 data-os-after-call="latepoint_bundle_added_to_quick_order"
96 data-os-output-target=".order-items-list"
97 data-os-output-target-do="prepend"
98 data-os-action="' . esc_attr( OsRouterHelper::build_route_name( 'orders', 'generate_bundle_order_item_block' ) ) . '"
99 data-os-params="' . esc_attr( OsUtilHelper::build_os_params( [ 'order_id' => $order->id, 'bundle_id' => $bundle->id ] ) ) . '">
100 <div class="noi-description-wrapper">
101 <div class="noi-label">' . esc_html( $bundle->name ) . '</div>
102 <div class="noi-description">' . esc_html( implode( ', ', $bundle->get_service_and_quantity_descriptions() ) ) . '</div>
103 </div>
104 <div class="noi-price">' . esc_html( $bundle->get_formatted_charge_amount() ) . '</div>
105 </div>';
106 }
107 ?>
108 </div>
109 </div>
110 <?php if ( $bundles ) { ?>
111 <div class="new-order-item-variant-selector-wrapper">
112 <div class="centered-question-label"><?php esc_html_e( 'What type of item would you like to add?', 'latepoint' ); ?></div>
113 <div class="new-order-item-variant-selector">
114 <div class="new-order-item-variant new-order-item-variant-booking">
115 <i class="latepoint-icon latepoint-icon-calendar2"></i>
116 <div><?php esc_html_e( 'Booking', 'latepoint' ); ?></div>
117 </div>
118 <div class="new-order-item-variant new-order-item-variant-bundle">
119 <i class="latepoint-icon latepoint-icon-layers"></i>
120 <div><?php esc_html_e( 'Bundle', 'latepoint' ); ?></div>
121 </div>
122 </div>
123 </div>
124 <?php } ?>
125 <?php } ?>
126 <div class="order-items-list">
127 <?php if ( empty( $order_bookings ) && empty( $order_bundles ) ) {
128 echo '<div class="no-results">' . esc_html__( 'Order is empty', 'latepoint' ) . '</div>';
129 } else { ?>
130 <?php foreach ( $order_bundles as $order_item_id => $order_bundle ) {
131 $preselected_bundle_booking_id = ( $preselected_order_item && ( $preselected_order_item->id == $order_item_id ) ) ? $preselected_booking->id : false;
132 $preselected_css = ( $preselected_bundle_booking_id ? 'holds-preselected-booking is-open' : '' );
133 echo '<div class="order-item order-item-variant-bundle ' . esc_attr( $preselected_css ) . '" data-order-item-id="' . esc_attr( $order_item_id ) . '">';
134 echo OsOrdersHelper::generate_order_item_pill_for_bundle( $order_bundle, $order_item_id, $preselected_bundle_booking_id );
135 echo '</div>';
136 } ?>
137 <?php foreach ( $order_bookings as $order_item_id => $order_booking ) {
138 if ( empty( $order_booking ) ) {
139 continue;
140 }
141 $can_view = OsRolesHelper::can_user_make_action_on_model_record( $order_booking, 'view' );
142 $unfold = ( count( $order_bookings ) == 1 && empty( $order_bundles ) || ( $preselected_booking && $preselected_booking->id == $order_booking->id ) );
143 $preselected_css = $unfold ? 'holds-preselected-booking is-open' : '';
144
145 if ( ! $can_view ) {
146 $preselected_css .= ' non-viewable';
147 }
148
149 echo '<div class="order-item order-item-variant-booking ' . esc_attr( $preselected_css ) . '" data-order-item-id="' . esc_attr( $order_item_id ) . '">';
150 echo OsOrdersHelper::booking_data_form_for_order_item_id( $order_item_id, $order_booking, LATEPOINT_ITEM_VARIANT_BOOKING, ! $unfold );
151 echo '</div>';
152 }
153 }
154 ?>
155 </div>
156 <?php if ( $show_only_preselected_items ) {
157 $total_count_other_items = count( $order->get_items() ) - 1;
158 if ( $total_count_other_items > 0 ) {
159 echo '<div class="hidden-order-items-notice">';
160 if ( $total_count_other_items > 1 ) {
161 // translators: %d number of items in the order
162 echo '<div class="hidden-order-items-notice-message">' . esc_html( sprintf( __( 'There are %d more items in this order.', 'latepoint' ), ( $total_count_other_items ) ) ) . '</div>';
163 } else {
164 echo '<div class="hidden-order-items-notice-message">' . esc_html__( 'There is one more item in this order.', 'latepoint' ) . '</div>';
165 }
166 echo '<div class="hidden-order-items-notice-link">' . esc_html__( 'Show All Items', 'latepoint' ) . '</div>';
167 echo '</div>';
168 }
169 } ?>
170 </div>
171
172 <div class="customer-info-w selected">
173 <div class="os-form-sub-header">
174 <h3><?php esc_html_e( 'Customer', 'latepoint' ); ?></h3>
175 <div class="os-form-sub-header-actions">
176 <?php if ( OsRolesHelper::can_user( 'customer__create' ) ) { ?>
177 <a href="#" class="latepoint-btn latepoint-btn-sm latepoint-btn-link customer-info-create-btn"
178 data-os-output-target=".customer-quick-edit-form-w"
179 data-os-after-call="latepoint_quick_order_customer_cleared"
180 data-os-action="<?php echo esc_attr( OsRouterHelper::build_route_name( 'customers', 'inline_edit_form' ) ); ?>">
181 <i class="latepoint-icon latepoint-icon-plus"></i><span><?php esc_html_e( 'New', 'latepoint' ); ?></span>
182 </a>
183 <?php } ?>
184 <a href="#" class="latepoint-btn latepoint-btn-sm latepoint-btn-link customer-info-load-btn">
185 <i class="latepoint-icon latepoint-icon-search"></i><span><?php esc_html_e( 'Find', 'latepoint' ); ?></span>
186 </a>
187 </div>
188 </div>
189 <div class="customers-selector-w">
190 <div class="customers-selector-search-w">
191 <i class="latepoint-icon latepoint-icon-search"></i>
192 <input type="text" data-route="<?php echo esc_attr( OsRouterHelper::build_route_name( 'customers', 'query_for_booking_form' ) ); ?>" class="customers-selector-search-input"
193 placeholder="<?php esc_attr_e( 'Start typing to search...', 'latepoint' ); ?>">
194 <span class="customers-selector-cancel">
195 <i class="latepoint-icon latepoint-icon-x"></i>
196 <span><?php esc_html_e( 'cancel', 'latepoint' ); ?></span>
197 </span>
198 </div>
199 <?php if ( $customers ) { ?>
200 <div class="customers-options-list">
201 <?php foreach ( $customers as $customer ) { ?>
202 <div class="customer-option" data-os-params="<?php echo esc_attr( OsUtilHelper::build_os_params( [ 'customer_id' => $customer->id ] ) ); ?>"
203 data-os-after-call="latepoint_quick_order_customer_selected"
204 data-os-after-call-error="latepoint_quick_order_customer_selected"
205 data-os-output-target=".customer-quick-edit-form-w"
206 data-os-action="<?php echo esc_attr( OsRouterHelper::build_route_name( 'customers', 'inline_edit_form' ) ); ?>">
207 <div class="customer-option-avatar" style="background-image: url(<?php echo esc_url( OsCustomerHelper::get_avatar_url( $customer ) ); ?>)"></div>
208 <div class="customer-option-info">
209 <h4 class="customer-option-info-name"><span><?php echo esc_html( $customer->full_name ); ?></span></h4>
210 <ul>
211 <li>
212 <?php esc_html_e( 'Email: ', 'latepoint' ); ?>
213 <strong><?php echo esc_html( $customer->email ); ?></strong>
214 </li>
215 <li>
216 <?php esc_html_e( 'Phone: ', 'latepoint' ); ?>
217 <strong><?php echo esc_html( $customer->phone ); ?></strong>
218 </li>
219 </ul>
220 </div>
221 </div>
222 <?php } ?>
223 </div>
224 <?php } ?>
225 </div>
226 <div class="customer-quick-edit-form-w">
227 <?php require( LATEPOINT_VIEWS_ABSPATH . 'customers/inline_edit_form.php' ); ?>
228 </div>
229 </div>
230 <div>
231 <div class="os-form-sub-header">
232 <h3><?php esc_html_e( 'Price Breakdown', 'latepoint' ); ?></h3>
233 <div class="os-form-sub-header-actions">
234 <a href="#" class="latepoint-btn latepoint-btn-sm latepoint-btn-link reload-price-breakdown"
235 data-route="<?php echo esc_attr( OsRouterHelper::build_route_name( 'orders', 'reload_price_breakdown' ) ); ?>">
236 <i class="latepoint-icon latepoint-icon-refresh-cw"></i>
237 <span><?php esc_html_e( 'Recalculate', 'latepoint' ); ?></span>
238 </a>
239 </div>
240 </div>
241 <div class="price-breakdown-wrapper">
242 <?php include '_price_breakdown.php'; ?>
243 </div>
244 </div>
245 <div class="balance-payment-wrapper">
246 <?php include '_balance_and_payments.php'; ?>
247 </div>
248
249 <?php
250 if ( OsRolesHelper::can_user( 'transaction__view' ) ) { ?>
251 <div class="transactions-info-w">
252 <div class="os-form-sub-header">
253 <h3><?php esc_html_e( 'Transactions', 'latepoint' ); ?></h3>
254 </div>
255 <div class="quick-transactions-list-w">
256 <?php
257 if ( $transactions ) {
258 foreach ( $transactions as $transaction ):
259 include '_transaction_box.php';
260 endforeach;
261 }
262 ?>
263 </div>
264 <?php if ( OsRolesHelper::can_user( 'transaction__create' ) ) { ?>
265 <div class="quick-add-item-button"
266 data-os-after-call="latepoint_init_quick_transaction_form"
267 data-os-before-after="before"
268 data-os-params="<?php echo OsUtilHelper::build_os_params( [ 'order_id' => $order->id ] ) ?>"
269 data-os-action="<?php echo esc_attr( OsRouterHelper::build_route_name( 'transactions', 'edit_form' ) ); ?>">
270 <i class="latepoint-icon latepoint-icon-plus2"></i>
271 <span><?php esc_html_e( 'Add Transaction', 'latepoint' ); ?></span>
272 </div>
273 <?php } ?>
274 </div>
275 <?php }
276 if ( ! $order->is_new_record() ) {
277 if ( OsRolesHelper::can_user( 'invoices__view' ) ) {
278 if ( ! apply_filters( 'latepoint_feature_invoices', false ) ) { ?>
279 <div class="transactions-info-w">
280 <div class="os-form-sub-header">
281 <h3><?php esc_html_e( 'Invoices', 'latepoint' ); ?></h3>
282 </div>
283 <a href="#" class="pro-upgrade-required">
284 <div class="pur-heading"><?php esc_html_e( 'Upgrade to PRO', 'latepoint' ); ?></div>
285 <div class="pur-desc"><?php esc_html_e( 'To unlock invoicing feature, you need to upgrade to a PRO version', 'latepoint' ); ?></div>
286 </a>
287 </div>
288 <?php
289 }
290 }
291 }
292
293 /**
294 * Content after order edit form
295 *
296 * @param {OsOrderModel} $order instance of order model that is being edited
297 *
298 * @since 5.1.0
299 * @hook latepoint_order_quick_edit_form_content_after
300 *
301 */
302 do_action( 'latepoint_order_quick_edit_form_content_after', $order );
303 ?>
304 </div>
305 <div class="os-form-buttons os-quick-form-buttons">
306 <?php if ( $order->is_new_record() ) { ?>
307 <button type="submit" class="latepoint-btn latepoint-btn-block latepoint-btn-lg"><?php esc_html_e( 'Create Order', 'latepoint' ); ?></button>
308 <?php } else { ?>
309 <div class="os-full">
310 <button type="submit" class="latepoint-btn latepoint-btn-block latepoint-btn-lg"><?php esc_html_e( 'Save Changes', 'latepoint' ); ?></button>
311 </div>
312 <div class="os-compact">
313 <a href="#"
314 data-os-success-action="reload"
315 data-os-action="<?php echo esc_attr( OsRouterHelper::build_route_name( 'orders', 'destroy' ) ); ?>"
316 data-os-params="<?php echo esc_attr( OsUtilHelper::build_os_params( [ 'id' => $order->id ], 'destroy_order_' . $order->id ) ); ?>"
317 data-os-prompt="<?php esc_attr_e( 'Are you sure you want to delete this order? All appointments that are attached ot this order will be removed as well', 'latepoint' ); ?>"
318 class="latepoint-delete-order latepoint-btn latepoint-btn-secondary latepoint-btn-lg latepoint-btn-just-icon"
319 title="<?php esc_attr_e( 'Delete Order', 'latepoint' ); ?>">
320 <i class="latepoint-icon latepoint-icon-trash1"></i>
321 </a>
322 </div>
323 <?php } ?>
324 </div>
325 <?php
326 echo OsFormHelper::hidden_field( 'order[id]', $order->id );
327 wp_nonce_field( $order->is_new_record() ? 'new_order' : 'edit_order_' . $order->id );
328 ?>
329 </form>
330 </div>