Пример #1
0
 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;
 }
Пример #2
0
 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);
 }
Пример #4
0
 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);
 }