diff --git a/api/externals/repository/expense_repository.go b/api/externals/repository/expense_repository.go index 788e4a869..3f79e0c27 100644 --- a/api/externals/repository/expense_repository.go +++ b/api/externals/repository/expense_repository.go @@ -31,19 +31,19 @@ func NewExpenseRepository(c db.Client, ac abstract.Crud) ExpenseRepository { } func (er *expenseRepository) All(c context.Context) (*sql.Rows, error) { - query := "SELECT * FROM expense" + query := "SELECT * FROM expenses" return er.crud.Read(c, query) } func (er *expenseRepository) Find(c context.Context, id string) (*sql.Row, error) { - query := "SELECT * FROM expense WHERE id = " + id + query := "SELECT * FROM expenses WHERE id = " + id return er.crud.ReadByID(c, query) } func (er *expenseRepository) Create(c context.Context, name string, yearID string) error { query := ` INSERT INTO - expense (expense_name,yearID) + expenses (expense_name,yearID) VALUES ('` + name + "'," + yearID + ")" return er.crud.UpdateDB(c, query) @@ -52,7 +52,7 @@ func (er *expenseRepository) Create(c context.Context, name string, yearID strin func (er *expenseRepository) Update(c context.Context, id string, name string, yearID string) error { query := ` UPDATE - expense + expenses SET expense_name = '` + name + "', yearID = " + yearID + " WHERE id = " + id @@ -60,12 +60,12 @@ func (er *expenseRepository) Update(c context.Context, id string, name string, y } func (er *expenseRepository) Destroy(c context.Context, id string) error { - query := "DELETE FROM expense WHERE id = " + id + query := "DELETE FROM expenses WHERE id = " + id return er.crud.UpdateDB(c, query) } func (er *expenseRepository) FindLatestRecord(c context.Context) (*sql.Row, error) { - query := `SELECT * FROM expense ORDER BY id DESC LIMIT 1` + query := `SELECT * FROM expenses ORDER BY id DESC LIMIT 1` return er.crud.ReadByID(c, query) } @@ -114,13 +114,13 @@ func (er *expenseRepository) AllByPeriod(c context.Context, year string) (*sql.R SELECT * FROM - expense + expenses INNER JOIN years ON - expense.yearID = years.id + expenses.yearID = years.id WHERE years.year = ` + year + - " ORDER BY expense.id;" + " ORDER BY expenses.id;" return er.crud.Read(c, query) } diff --git a/mysql/db/expense.sql b/mysql/db/expenses.sql similarity index 70% rename from mysql/db/expense.sql rename to mysql/db/expenses.sql index 72429a0d5..e69cbaddc 100644 --- a/mysql/db/expense.sql +++ b/mysql/db/expenses.sql @@ -1,6 +1,6 @@ use finansu_db; -CREATE TABLE expense ( +CREATE TABLE expenses ( id int(10) unsigned not null auto_increment, expense_name varchar(255) not null, totalPrice int(10) default 0, @@ -10,16 +10,16 @@ CREATE TABLE expense ( PRIMARY KEY (id) ); -INSERT into expense (expense_name,yearID) values ("企画局",2); -INSERT into expense (expense_name,yearID) values ("総務局",2); -INSERT into expense (expense_name,yearID) values ("情報局",2); -INSERT into expense (expense_name,yearID) values ("制作局",2); -INSERT into expense (expense_name,yearID) values ("渉外局",2); -INSERT into expense (expense_name,yearID) values ("財務局",2); -INSERT into expense (expense_name,yearID) values ("本部運営費",2); -INSERT into expense (expense_name,yearID) values ("備品整備費",2); -INSERT into expense (expense_name,yearID) values ("備品整備準備費",2); -INSERT into expense (expense_name,yearID) values ("翌年度繰越金",2); +INSERT into expenses (expense_name,yearID) values ("企画局",2); +INSERT into expenses (expense_name,yearID) values ("総務局",2); +INSERT into expenses (expense_name,yearID) values ("情報局",2); +INSERT into expenses (expense_name,yearID) values ("制作局",2); +INSERT into expenses (expense_name,yearID) values ("渉外局",2); +INSERT into expenses (expense_name,yearID) values ("財務局",2); +INSERT into expenses (expense_name,yearID) values ("本部運営費",2); +INSERT into expenses (expense_name,yearID) values ("備品整備費",2); +INSERT into expenses (expense_name,yearID) values ("備品整備準備費",2); +INSERT into expenses (expense_name,yearID) values ("翌年度繰越金",2); -- 終端文字の変更 @@ -102,23 +102,23 @@ GROUP BY -- tmp2のデータをexpeneseに入れる UPDATE - expense + expenses INNER JOIN tmp2 ON - expense.id = tmp2.id + expenses.id = tmp2.id SET - expense.totalPrice = tmp2.totalPrice; + expenses.totalPrice = tmp2.totalPrice; --- tmp2のidがNULLのexpenseのtotalPriceを0にする +-- tmp2のidがNULLのexpensesのtotalPriceを0にする UPDATE - expense + expenses LEFT JOIN tmp2 ON - expense.id = tmp2.id + expenses.id = tmp2.id SET - expense.totalPrice = 0 + expenses.totalPrice = 0 WHERE tmp2.id IS NULL; diff --git a/mysql/feature/add_procedure.sql b/mysql/feature/add_procedure.sql new file mode 100644 index 000000000..f173bce0f --- /dev/null +++ b/mysql/feature/add_procedure.sql @@ -0,0 +1,108 @@ +-- 終端文字の変更 +DELIMITER // +-- ストアドプロシージャ作成 +CREATE PROCEDURE updateExpense() +BEGIN + +-- 1 テンポラリテーブル作成tmp,tmp +CREATE TEMPORARY TABLE tmp ( + id int(10) NOT NULL, + totalPrice int(10), + purchase_reports_id int(10), + addition int(10), + discount int(10), + expense_id int(10), + finance_check boolean, + PRIMARY KEY (`id`) +); + +CREATE TEMPORARY TABLE tmp2 ( + id int(10) NOT NULL, + totalPrice int(10) NOT NULL, + PRIMARY KEY (`id`) +); + +-- 2 mpにpurchase_itemsのfinansu_checkがtrueのものをpurchase_orderごとに和を入れる +INSERT INTO + tmp(id,totalPrice) +SELECT + pi.purchase_order_id, + SUM(pi.price * pi.quantity) +FROM + purchase_items pi +WHERE + pi.finance_check IS true +GROUP BY + pi.purchase_order_id; + +-- 3 tmpにpurhchase_reportsのデータを入れる +UPDATE + tmp +INNER JOIN + purchase_reports pr +ON + tmp.id = pr.purchase_order_id +SET + tmp.purchase_reports_id = pr.id, + tmp.addition = pr.addition, + tmp.discount = pr.discount, + tmp.finance_check = pr.finance_check; + +-- tmpにpurchaser_ordersのexpense_idを入れる +UPDATE + tmp +INNER JOIN + purchase_orders po +ON + tmp.id = po.id +SET + tmp.expense_id = po.expense_id +WHERE + po.finance_check IS true; + +-- expense_idがNULLのレコードを削除する +DELETE FROM tmp WHERE expense_id IS NULL; + +-- tmpのデータをexpense_idごとにまとめて総和を求める、データをtmp2に入れる +INSERT INTO + tmp2(id, totalPrice) +SELECT + tmp.expense_id, + SUM(tmp.totalPrice + tmp.addition - tmp.discount) +FROM + tmp +WHERE + tmp.finance_check IS true +GROUP BY + tmp.expense_id; + +-- tmp2のデータをexpeneseに入れる +UPDATE + expenses +INNER JOIN + tmp2 +ON + expenses.id = tmp2.id +SET + expenses.totalPrice = tmp2.totalPrice; + +-- tmp2のidがNULLのexpensesのtotalPriceを0にする +UPDATE + expenses +LEFT JOIN + tmp2 +ON + expenses.id = tmp2.id +SET + expenses.totalPrice = 0 +WHERE + tmp2.id IS NULL; + +-- テンポラリテーブル削除 +DROP TEMPORARY TABLE tmp,tmp2; + +END; +// + +-- 終端文字戻す +DELIMITER ;