public static function create_estimate($estimate = array()) { $possible_dups = SI_Post_Type::find_by_meta(SI_Estimate::POST_TYPE, array(self::FRESHBOOKS_ID => $estimate['estimate_id'])); // Don't create a duplicate if this was already imported. if (!empty($possible_dups)) { do_action('si_error', 'Estimate imported already', $estimate['estimate_id']); return; } $clients = SI_Post_Type::find_by_meta(SI_Client::POST_TYPE, array(self::FRESHBOOKS_ID => $estimate['client_id'])); // Get client and confirm it's validity $client_id = 0; if (is_array($clients)) { $client = SI_Client::get_instance($clients[0]); $client_id = is_a($client, 'SI_Client') ? $client->get_id() : 0; } $args = array('subject' => $estimate['description'] ? $estimate['description'] : 'Freshbooks Import #' . $estimate['estimate_id']); $new_estimate_id = SI_Estimate::create_estimate($args, SI_Estimate::STATUS_PENDING); update_post_meta($new_estimate_id, self::FRESHBOOKS_ID, $estimate['estimate_id']); $est = SI_Estimate::get_instance($new_estimate_id); $est->set_client_id($client_id); if (!is_array($estimate['number'])) { $est->set_estimate_id($estimate['number']); } if (!is_array($estimate['amount'])) { $est->set_total($estimate['amount']); } if (!is_array($estimate['currency_code'])) { $est->set_currency($estimate['currency_code']); } if (!is_array($estimate['po_number'])) { $est->set_po_number($estimate['po_number']); } if (!is_array($estimate['discount'])) { $est->set_discount($estimate['discount']); } if (!is_array($estimate['notes'])) { $est->set_notes($estimate['notes']); } if (!is_array($estimate['terms'])) { $est->set_terms($estimate['terms']); } $est->set_issue_date(strtotime($estimate['date'])); // post date $est->set_post_date(date('Y-m-d H:i:s', strtotime($estimate['date']))); // line items $line_items = array(); if (isset($estimate['lines']['line']) && !empty($estimate['lines']['line'])) { // for some reason FB if (isset($estimate['lines']['line'][0])) { foreach ($estimate['lines']['line'] as $key => $item) { $line_items[] = array('rate' => !is_array($item['unit_cost']) ? $item['unit_cost'] : '', 'qty' => !is_array($item['quantity']) ? $item['quantity'] : '', 'desc' => !is_array($item['description']) ? $item['description'] : '', 'type' => !is_array($item['type']) ? $item['type'] : '', 'total' => !is_array($item['amount']) ? $item['amount'] : '', 'tax' => !is_array($item['tax1_percent']) ? $item['tax1_percent'] : ''); } } else { $line_items[] = array('rate' => !is_array($estimate['lines']['line']['unit_cost']) ? $estimate['lines']['line']['unit_cost'] : '', 'qty' => !is_array($estimate['lines']['line']['quantity']) ? $estimate['lines']['line']['quantity'] : '', 'desc' => !is_array($estimate['lines']['line']['description']) ? $estimate['lines']['line']['description'] : '', 'type' => !is_array($estimate['lines']['line']['type']) ? $estimate['lines']['line']['type'] : '', 'total' => !is_array($estimate['lines']['line']['amount']) ? $estimate['lines']['line']['amount'] : '', 'tax' => !is_array($estimate['lines']['line']['tax1_percent']) ? $estimate['lines']['line']['tax1_percent'] : ''); } } $est->set_line_items($line_items); // Record do_action('si_new_record', $estimate, self::RECORD, $new_estimate_id, self::__('Estimate Imported'), 0); return $est; }
public static function create_estimate($estimate = array()) { if (isset($estimate['Description']) && $estimate['Description'] != '') { $subject = $estimate['Description']; } elseif (isset($estimate['Client']) && $estimate['Client'] != '') { $subject = $estimate['Client'] . ' #' . $estimate['Estimate ID']; } else { $subject = '#' . $estimate['Estimate ID']; } $args = array('subject' => $subject); // Attempt to find matching client if (isset($estimate['Company'])) { global $wpdb; $client_ids = $wpdb->get_col($wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE post_title = %s AND post_type = %s", esc_sql($estimate['Company']), SI_Client::POST_TYPE)); // Get client and confirm it's validity if (is_array($client_ids) && !empty($client_ids)) { $client = SI_Client::get_instance($client_ids[0]); $args['client_id'] = $client->get_id(); } } if (isset($estimate['Estimate ID'])) { $args['invoice_id'] = $estimate['Estimate ID']; } if (isset($estimate['Total'])) { $args['total'] = $estimate['Total']; } if (isset($estimate['Currency Code'])) { $args['currency'] = $estimate['Currency Code']; } if (isset($estimate['PO Number'])) { $args['po_number'] = $estimate['PO Number']; } if (isset($estimate['Discount %'])) { $args['discount'] = $estimate['Discount %']; } if (isset($estimate['Tax 1 %'])) { $args['tax'] = $estimate['Tax 1 %']; } if (isset($estimate['Tax 2 %'])) { $args['tax2'] = $estimate['Tax 2 %']; } if (isset($estimate['Notes'])) { $args['notes'] = $estimate['Notes']; } if (isset($estimate['Terms'])) { $args['terms'] = $estimate['Terms']; } if (isset($estimate['Estimate Date'])) { $args['issue_date'] = strtotime($estimate['Estimate Date']); } if (isset($estimate['Due Date'])) { $args['due_date'] = strtotime($estimate['Due Date']); } $line_items = self::build_line_items($invoice); $args['line_items'] = $line_items; $new_estimate_id = SI_Estimate::create_estimate($args, SI_Estimate::STATUS_TEMP); update_post_meta($new_estimate_id, self::CSV_ID, $estimate['Estimate ID']); $est = SI_Estimate::get_instance($new_estimate_id); // post date if (isset($estimate['Estimate Date'])) { $est->set_post_date(date('Y-m-d H:i:s', strtotime($estimate['Estimate Date']))); } return $est; }
public static function maybe_create_estimate($args = array()) { // create array of fields if (!isset($args['fields'])) { $fields = self::submission_form_fields(); foreach ($fields as $key => $data) { if (isset($_REQUEST['sa_estimate_' . $key]) && $_REQUEST['sa_estimate_' . $key] != '') { $args['fields'][$key] = array('data' => $data, 'value' => $_REQUEST['sa_estimate_' . $key]); } } } if (isset($_REQUEST['sa_estimate_requirements'])) { $args['line_items'] = array(array('rate' => 0, 'qty' => 1, 'tax' => 0, 'total' => 0, 'desc' => esc_textarea($_REQUEST['sa_estimate_requirements']))); } $defaults = array('subject' => isset($_REQUEST['sa_estimate_title']) ? $_REQUEST['sa_estimate_title'] : sprintf(__('New Estimate: %s', 'sprout-invoices'), date_i18n(get_option('date_format') . ' @ ' . get_option('time_format'), current_time('timestamp'))), 'requirements' => isset($_REQUEST['sa_estimate_requirements']) ? $_REQUEST['sa_estimate_requirements'] : __('No requirements submitted. Check to make sure the "requirements" field is required.', 'sprout-invoices'), 'fields' => !empty($args['fields']) ? $args['fields'] : $_REQUEST); $parsed_args = wp_parse_args($args, $defaults); // Create estimate $estimate_id = SI_Estimate::create_estimate($parsed_args); // handle image uploads $estimate = SI_Estimate::get_instance($estimate_id); if (!empty($_FILES['sa_estimate_file'])) { // Set the uploaded field as an attachment $estimate->set_attachement($_FILES); } // TODO Set the solution type // End do_action('estimate_submitted', $estimate, $parsed_args); }
public static function create_estimate($data = array()) { $estimate_id = SI_Estimate::create_estimate($data); return self::estimate_data($estimate_id); }
/** * Create Estimate * @param array $args * subject * * requirements * * fields * */ public static function maybe_create_estimate($args = array()) { $defaults = array('subject' => sprintf(self::__('New Estimate: %s'), date(get_option('date_format') . ' @ ' . get_option('time_format'), current_time('timestamp'))), 'requirements' => self::__('No requirements submitted. Check to make sure the "requirements" field is required.'), 'fields' => $_REQUEST); $parsed_args = apply_filters('si_afi_maybe_create_estimate', wp_parse_args($args, $defaults)); // Create estimate $estimate_id = SI_Estimate::create_estimate($parsed_args); $estimate = SI_Estimate::get_instance($estimate_id); // TODO Add images // TODO Set the solution type // End, don't use estimate_submitted since a notification will be fired. do_action('estimate_submitted_from_adv_form', $estimate, $parsed_args); // History do_action('si_new_record', sprintf(si__('Estimate Submitted: Form %s.'), $parsed_args['history_link']), self::SUBMISSION_UPDATE, $estimate_id, sprintf(si__('Estimate Submitted: Form %s.'), $parsed_args['history_link']), 0, false); return $estimate; }
public static function create_estimate($data = array()) { $estimate_id = SI_Estimate::create_estimate($data); $estimate = SI_Estimate::get_instance($estimate_id); if (!is_a($estimate, 'SI_Estimate')) { return; } return self::estimate_data($estimate); }