開平食材採購系統
出自福留子孫
目錄
文件
- 開平wiki
- google 雲端硬碟/與我共用的項目
- 食材系統操作手冊
- 程式手冊
- php程式說明
- 食材系統資料庫表格欄位說明
- qq/0資訊中心123/食材系統暫存資料夾
- https://www.evernote.com/shard/s335/sh/a61396ba-2a25-462d-acb7-e4b05ccc4669/b329e629a1e0946c33026a89dc9edfda
- 按略過
PDF產生流程:參考 order2pdf.php
- 在 models/pdf-fax.php(直印)或 models/pdf.php(直印)產生 TCPDF 物件,並設定PDF相關資料,例如直印或橫印、紙張大小、邊界寬度、是否自動分頁、使用的字型等
- 把要轉換成PDF的資料,例如食材清單等,都以HTML格式並加到變數 $html 中
- 把變數 $html 透過 TCPDF 物件的方法 writeHTML() 暫存到記憶體中
- 使用 TCPDF 物件的方法 Output 執行輸出 PDF。Output() 第一個參數是輸出的 PDF 檔名,如果如要指定儲存到伺服器的哪個資料夾中,則寫成「./資料夾名稱/PDF檔名」。第二個是輸出 PDF 的方式,I:使用瀏覽器顯示,D:下載到使用者的電腦中,F:儲存到伺服器
傳真流程:參考 fax.php
- 中華電信網路傳真只接受上傳 PDF 檔,所以把要傳真的資料轉成PDF檔,儲存到伺服器上的資料夾 files_upload
- 準備傳真所需的參數:廠商傳真號碼($receiver)、上傳的PDF檔名($msgbody)、是否立即傳真($sendtype)、預定傳真時間($sendtime,立刻傳真,就給空值)
- 使用 function fax_sent() 執行傳真,執行完畢會回傳「傳真代碼」(一個數字),儲存到資料庫中,以供後續查詢是否傳真成功,因為傳真機大約1、2分鐘才會接收到傳真要求。fax_sent() 的定義在 models/fax-lib.php
- 中華電信會自動重試三次,如果都沒有傳真成功,才會回傳失敗。
- 執行 fax-result-all.php ,抓取資料庫中的傳真代碼,以查詢並更新傳真結果。如果傳真不成功,則會回傳失敗,否則只會是『已點選連結「傳真」』
- 資料夾 files_upload 的 PDF 檔使用 cron 指令每天晚上刪除,避免佔用過多伺服器硬碟空間
網站
- 測試與正式網站是同一台機器,只是不同資料夾
- 正式網站
- 內網:10.80.8.18/port:22/SFTP/jj
- 外網:kpftest.kpvs.tp.edu.tw/port:13587/SFTP/需要kvm-fz.ppk/jj
- 正式用 et 資料夾,給 kpfood 用。kpfood.kpvs.tp.edu.tw
- 新增 ett 資料夾,給 kpf_test 用。kpftest.kpvs.tp.edu.tw
- 改 /config/constant.php,改 et 類別位置。
- 新增 ett 軟連結指向 ett 。
- 資料庫 http://kpfpma.kpvs.tp.edu.tw/
架構
/config
site的常數 工作程式頭
/views
/template header.php 等於 theme.php
crontab 在位置在 /var/spool/cron 資料夾中
工作程式說明(以 food.php 為例)
基本載入
- config/etable-lib.php
- 載入 config/constant.php
- 不載入 wiki 解譯函式 wiki.php
- 缺函式 webContent :可投射wiki頁、投射資料表內容
- 多函式 load_template :可載入指定的 view
- 載入 etable.php
- new $ET
- 指定 $ET 的登出錨點
- 載入 config/constant.php
- models/order.php
- 載入 models/db-lib.php
- 函式 query($sql):傳回查詢結果。
- 函式 select_query($sql):傳回查詢結果之陣列(使用 mysql_fetch_assoc )。
- 常用函式製備
- 載入 models/db-lib.php
- models/login.php:指定 $ET->loginTable
- 取用 $_REQUEST['workControl']['o1id']
工作
- 若 catchText 載入 models/searchSelect.php
- models/searchSelect.php :由食材資料表找食材造 select 表單區塊,並 echo 出來。
- 若剛完成插入一筆,則檢查請購單是否已有這筆食材,
- 如果有以 javascript 送出 alert
- 如果沒有則載入 food-list.php ( 請購單 main() 後再 load_template("footer.php"))
- 若非 catchText 也非剛完成插入一筆則:load_template("header.php") 再載入 food-list.php
本程式使用的函式
測試
排序 bug
- http://kpftest.kpvs.tp.edu.tw/quote-approval-each.php?workControl[vid]=1
- 帳密
- 下 SQL:UPDATE `kpfood_food_quote_online` SET `status` =2 WHERE `vid` =1
- 排序、和 batch 衝突。改 etable.php 增加 batch 的執行條件須 execBatch 非 0 ,即可避開衝突。
請購單插入食材檢查
- food.php 請購
- 叫 searchSelect.php 查表 kpfood_food_food 產生 select 及其諸 option
- 回到 etable.php 的主程式其中 $action=='ins_ed' 或 $action=='inss' ,並且傳回 workControl[請購單編碼]
- 再來要想怎麼檢查表 kpfood_food_order11 如果食材重複跳警告。
- 也可在更早 option 出現重複食材就跳警告。
請購單輸入食材不得重覆
改 login.php
在 javascript 中 function postData(dataSource,para,divID,a,waitMoment){…} ahr.onreadystatechange=function(){if(ahr.readyState==4 && ahr.status==200){ if(ahr.responseText.substr(0,5)=='alert'){eval(ahr.responseText.trim());} else{document.getElementById(divID).innerHTML=ahr.responseText;onAjax(a);} }};
food.php
其他
test.php
- 測試 batch 的 form 與額外的 form 巢狀時,瀏覽器不反應。
- 最終導致額外的搬位置。
登出時跳到指定的路徑
- 在 login.php 中新增屬性 logoutTo 。