餐宴收入設定
未含服務費:$0
餐宴收入(含服務費)
$0
服務費合計:$0 共 0 人
收款試算比較
現金收款
每位餐標$0
服務費 10%+$0
扣稅 5%(內含)—$0 (÷1.05)
每位實收$0
每位成本$0
預計每位淨利—
全場實收(×20人)
$0
全場淨利—
信用卡收款
每位餐標$0
服務費 10%+$0
扣稅 5%(內含)—$0 (÷1.05)
扣手續費 2%—$0 (×0.98)
每位實收$0
每位成本$0
預計每位淨利—
全場實收(×20人)
$0
全場淨利—
🔐 您是管理員,可編輯固定成本金額。儲存後一般員工登入時將看到唯讀數值。
🔒 固定成本金額由管理員設定,員工僅可查看。如需修改請聯繫管理員。
固定成本項目(每月)
管理員設定,員工唯讀
各月水電瓦斯費 填入後自動算月平均
已填月份:0 個月
月平均:—
每月固定成本合計—
正職人員
基本日成本 = 月薪×1.35÷20
加班時薪成本 = 月薪÷20÷8×加班倍數
加班費:第1-2小時×1.34倍、第3-4小時×1.67倍
| 姓名 |
月薪 🔒 |
基本日成本 🔒 |
時薪基準 🔒 |
上班時數 |
時數費用 |
第1-2h |
加班費1-2h |
第3-4h |
加班費3-4h |
全日合計 |
佔總% |
備註 |
|
🔒 月薪欄位僅管理員可見
正職基本日成本合計—
正職時數費用合計—
加班費(第1-2h)合計—
加班費(第3-4h)合計—
正職全日合計—
日薪人員 直接填當日日薪
日薪人員合計—
計時人員 勞保+職災固定90元 勞退固定60元
| 姓名 |
時薪 |
總工時 |
正常時數 |
正常薪資 |
第1-2h |
加班費 |
第3-4h |
加班費 |
薪資合計 |
勞保+職災 |
勞退6% |
含負擔合計 |
佔總% |
備註 |
|
正常薪資合計—
加班費(第1-2h)合計—
加班費(第3-4h)合計—
薪資合計(含加班)—
勞保+職災合計—
勞退提撥合計—
計時全日合計—
💡 快速輸入模式(懶人用)
不需填寫細項,直接輸入食材總金額
※ 若下方有填寫細項,細項合計會自動同步到此欄;亦可忽略細項,直接在此輸入總額送入彙總計算
食材金額 = 使用量 × 實際單價
💡 點「帶入」可把食材加到下方明細表;點「🗑」可從食材庫刪除
食材明細
食材成本率 —
|
菜單 |
廠商 |
食材名稱 |
使用量 |
單位 |
實際單價 (元) |
食材金額 (元) |
備註 |
|
食材成本總計
NT$ 0
各成本項目明細
🏛 固定成本(場次 —小時)—
折舊攤提—
租金—
水電瓦斯費—
其他固定項目
👥 人力成本—
正職—
日薪—
計時—
🥩 食材成本—
🌸 其他費用—
總成本合計—
☁️ Google Drive 雲端同步
可從任何裝置存取存檔記錄
📋 設定步驟(一次性)
1. 開啟
Google Apps Script(需登入 Google 帳號)
2. 建立新專案,貼上下方程式碼,儲存並部署為「網頁應用程式」
3. 執行身份選「我」,存取權限選「所有人(包括匿名)」
4. 複製部署網址貼到下方
function doPost(e) {
var data = JSON.parse(e.postData.contents);
var folder = DriveApp.getFoldersByName('四葉成本存檔').hasNext()
? DriveApp.getFoldersByName('四葉成本存檔').next()
: DriveApp.createFolder('四葉成本存檔');
var fileName = data.evName + '_' + data.evDate + '_' + new Date().toISOString().slice(0,10) + '.json';
folder.createFile(fileName, JSON.stringify(data), MimeType.PLAIN_TEXT);
return ContentService.createTextOutput(JSON.stringify({ok:true,file:fileName}))
.setMimeType(ContentService.MimeType.JSON)
.setHeader('Access-Control-Allow-Origin','*');
}
function doGet(e) {
var folder = DriveApp.getFoldersByName('四葉成本存檔').hasNext()
? DriveApp.getFoldersByName('四葉成本存檔').next() : null;
var files = [];
if(folder) {
var iter = folder.getFiles();
while(iter.hasNext()) {
var f = iter.next();
files.push({name:f.getName(), id:f.getId(), date:f.getDateCreated().toISOString()});
}
}
files.sort((a,b)=>b.date.localeCompare(a.date));
return ContentService.createTextOutput(JSON.stringify({ok:true,files:files}))
.setMimeType(ContentService.MimeType.JSON)
.setHeader('Access-Control-Allow-Origin','*');
}