public function delete() { // Get id of quote_request $input = Input::all(); $id = $input['delete']; $quote_request = QuoteRequest::find($id); // Delete Quote PDF if it exists $path = 'quotes/' . $id . '.pdf'; if (file_exists($path)) { unlink($path); } // Delete Artwork image and its thumbnail if they exist if ($quote_request->artwork_image != null) { $path_image = 'uploads/artworks/' . $quote_request->artwork_image; $path_thumbnail = 'uploads/thumbnails/' . $quote_request->artwork_image; if (file_exists($path_image)) { unlink($path_image); } if (file_exists($path_thumbnail)) { unlink($path_thumbnail); } } $quote_request_items = $quote_request->qris; foreach ($quote_request_items as $quote_request_item) { $quote_line_delete = QuoteRequestItem::find($quote_request_item->id); $quote_line_delete->delete(); } $quotes = $quote_request->quotes; foreach ($quotes as $quote) { $quote_lines = $quote->qris; foreach ($quote_lines as $quote_line) { $quote_line_delete = QuoteItem::find($quote_line->id); $quote_line_delete->delete(); } $quote_delete = Quote::find($quote->id); $quote_delete->delete(); } $quote_request->delete(); if (isset($input['customer_id'])) { return redirect('customers/' . $input['customer_id'] . '/history')->with('message', 'Quote / Job has been deleted successfully'); } else { return redirect('/')->with('message', 'Quote / Job has been deleted successfully'); } }
public function show_sticker($id) { $delivery_history = DeliveryHistory::find($id); $input = unserialize($delivery_history->input); $quote = QuoteRequest::find($delivery_history->qr_id); $delivery_address = CustomerAddress::find($input['delivery_address']); // Create PDF $qtys = isset($input['number']) ? $input['number'] : ''; $html = view('jobs.sticker', compact('input', 'quote', 'delivery_address', 'qtys')); $dompdf = PDF::loadHTML($html)->setPaper(array(0, 0, 422.37, 283.49)); return $dompdf->stream(); }
public function post_freight($id) { $input = Input::all(); $quoute_request = QuoteRequest::find($id); $freight_lines = $quoute_request->freight_charges; $freight_lines_to_delete = array(); foreach ($freight_lines as $freight_line) { array_push($freight_lines_to_delete, $freight_line->id); } $freight_charge = []; foreach ($quoute_request->qris as $line) { array_push($freight_charge, 0); } // If Freight data was entered if (isset($input['freight'])) { foreach ($input['freight'] as $index => $line) { if (isset($line['freight_id'])) { $freight = Freight::find($line['freight_id']); // Delete this item from array for deleting foreach ($freight_lines_to_delete as $key => $item) { if ($item == $freight->id) { unset($freight_lines_to_delete[$key]); } } } else { $freight = new Freight(); } $freight->quote_request_id = $quoute_request->id; $freight->type = $line['type']; if (isset($line['freight_id_chosen'])) { $freight->include_in_quote = true; } else { $freight->include_in_quote = false; } $freight->save(); // Save freight items fields foreach ($line['qri_id'] as $key => $column) { if (isset($line['id'])) { $freight_item = FreightItem::find($line['id'][$key]); } else { $freight_item = new FreightItem(); } $freight_item->freight_id = $freight->id; $freight_item->qri_id = $line['qri_id'][$key]; $freight_item->supplier_id = $line['supplier_id'][$key]; $freight_item->cbm = isset($line['cbm']) ? $line['cbm'][$key] : null; $freight_item->cbm_rate = isset($line['cbm_rate']) ? $line['cbm_rate'][$key] : null; $freight_item->number_items = isset($line['number_items']) ? $line['number_items'][$key] : null; $freight_item->fixed_cost = isset($line['fixed_cost']) ? $line['fixed_cost'][$key] : null; $freight_item->total_cost = $line['total_cost'][$key]; $freight_item->markup = $line['markup'][$key]; $freight_item->total = $line['total'][$key]; $freight_item->save(); if (isset($line['freight_id_chosen'])) { $freight_charge[$key] += $freight_item->total; } } // Erase ticked files if (isset($line['erase_files'])) { $file_names_array = is_null($freight->files) ? [] : unserialize($freight->files); foreach ($line['erase_files'] as $erase_file_index) { $path = 'uploads/attachments/' . $file_names_array[$erase_file_index]; if (file_exists($path)) { unlink($path); } unset($file_names_array[$erase_file_index]); } $freight->files = serialize($file_names_array); $freight->save(); } // Storing freight files if (Input::hasFile('files-' . $index)) { $files = Input::file('files-' . $index); $file_names_array = is_null($freight->files) ? [] : unserialize($freight->files); foreach ($files as $file) { if ($file->isValid()) { $filename = $file->getClientOriginalName(); $destination_path = 'uploads/attachments'; $file->move($destination_path, $filename); if (!in_array($filename, $file_names_array)) { array_push($file_names_array, $filename); } } } $freight->files = serialize($file_names_array); $freight->save(); } } } // Save freight charges foreach ($quoute_request->qris as $key => $line) { $line->freight_charge = $freight_charge[$key]; $line->save(); } // Delete needed items foreach ($freight_lines_to_delete as $line) { $freight = Freight::find($line); $file_names_array = is_null($freight->files) ? [] : unserialize($freight->files); foreach ($file_names_array as $file) { $path = 'uploads/attachments/' . $file; if (file_exists($path)) { unlink($path); } } // Delete related freight_items $freight_items = $freight->freight_items; foreach ($freight_items as $freight_item) { $freight_item->delete(); } } Freight::destroy($freight_lines_to_delete); return redirect('freight/' . $id)->with('message', 'Freight charges have been saved successfully'); }
public function send_invoice($id) { // Get data for sending invoice $quote_request = QuoteRequest::find($id); define('BASE_PATH', $_SERVER['DOCUMENT_ROOT']); define("XRO_APP_TYPE", "Private"); define("OAUTH_CALLBACK", 'http://printflow.local:8000/'); /* For Demo-Company define ( "OAUTH_CALLBACK", 'http://printflow.local:8000/' ); $useragent = "Demo-Printflow"; $signatures = array ( 'consumer_key' => 'PMNK76GMVNQLNK945E385MVIDCCMVQ', 'shared_secret' => 'VUQPJDKRZ1ZUPRSBBHUZ3J8DOQTQEL', // API versions 'core_version' => '2.0', 'payroll_version' => '1.0' ); */ $useragent = env('USER_AGENT'); $signatures = array('consumer_key' => env('XERO_KEY'), 'shared_secret' => env('XERO_SECRET'), 'core_version' => '2.0', 'payroll_version' => '1.0'); if (XRO_APP_TYPE == "Private" || XRO_APP_TYPE == "Partner") { $signatures['rsa_private_key'] = BASE_PATH . '/certs/privatekey.pem'; $signatures['rsa_public_key'] = BASE_PATH . '/certs/publickey.cer'; } $XeroOAuth = new \XeroOAuth(array_merge(array('application_type' => XRO_APP_TYPE, 'oauth_callback' => OAUTH_CALLBACK, 'user_agent' => $useragent), $signatures)); $initialCheck = $XeroOAuth->diagnostics(); $checkErrors = count($initialCheck); if ($checkErrors > 0) { // you could handle any config errors here, or keep on truckin if you like to live dangerously foreach ($initialCheck as $check) { echo 'Error: ' . $check . PHP_EOL; } } else { $session = $this->persistSession(array('oauth_token' => $XeroOAuth->config['consumer_key'], 'oauth_token_secret' => $XeroOAuth->config['shared_secret'], 'oauth_session_handle' => '')); $oauthSession = $this->retrieveSession(); if (isset($oauthSession['oauth_token'])) { $XeroOAuth->config['access_token'] = $oauthSession['oauth_token']; $XeroOAuth->config['access_token_secret'] = $oauthSession['oauth_token_secret']; if (isset($_REQUEST)) { if (!isset($_REQUEST['where'])) { $_REQUEST['where'] = ""; } } if (isset($_REQUEST['wipe'])) { session_destroy(); header("Location: {$here}"); // already got some credentials stored? } elseif (isset($_REQUEST['refresh'])) { $response = $XeroOAuth->refreshToken($oauthSession['oauth_token'], $oauthSession['oauth_session_handle']); if ($XeroOAuth->response['code'] == 200) { $session = $this->persistSession($response); $oauthSession = $this->retrieveSession(); } else { $this->outputError($XeroOAuth); if ($XeroOAuth->response['helper'] == "TokenExpired") { $XeroOAuth->refreshToken($oauthSession['oauth_token'], $oauthSession['session_handle']); } } } elseif (isset($oauthSession['oauth_token']) && isset($_REQUEST)) { $XeroOAuth->config['access_token'] = $oauthSession['oauth_token']; $XeroOAuth->config['access_token_secret'] = $oauthSession['oauth_token_secret']; $XeroOAuth->config['session_handle'] = $oauthSession['oauth_session_handle']; $xml = '<Invoices> <Invoice> <Type>ACCREC</Type> <Contact> <Name>' . htmlspecialchars($quote_request->customer->customer_name) . '</Name> </Contact> <Status>DRAFT</Status> <Date>' . Carbon::now()->format('Y-m-d') . '</Date> <DueDate>' . Carbon::now()->addWeeks(2)->format('Y-m-d') . '</DueDate> <Reference>' . htmlspecialchars($quote_request->ref) . '-' . $id . '</Reference> <LineAmountTypes>Exclusive</LineAmountTypes> <LineItems> <LineItem> <JobNo>' . $id . '</JobNo> <Title>' . htmlspecialchars($quote_request->title) . '</Title> <Description>' . htmlspecialchars($quote_request->title) . '</Description> <UnitAmount>' . $quote_request->job->job_item->price / $quote_request->job->job_item->quantity . '</UnitAmount> <GST>' . $quote_request->job->job_item->gst . '</GST> <AccountCode>230/</AccountCode> <TotalIncGST>' . $quote_request->job->job_item->total . '</TotalIncGST> <Quantity>' . $quote_request->job->job_item->quantity . '</Quantity> <PONumber>' . $id . '</PONumber> </LineItem>'; if (!empty($quote_request->summary)) { $xml .= '<LineItem> <Description>' . htmlspecialchars($quote_request->summary) . '</Description> </LineItem>'; } $xml .= '</LineItems> </Invoice> </Invoices>'; $response = $XeroOAuth->request('POST', $XeroOAuth->url('Invoices', 'core'), array(), $xml); if ($XeroOAuth->response['code'] == 200) { // Set status = 'completed' job $quote_request->status = 9; $quote_request->save(); return 'OK'; } else { $this->outputError($XeroOAuth); return 'ERROR'; } } } } return 'ERROR'; }