mirror of
https://github.com/dyiop/astute.git
synced 2025-04-05 21:10:16 -04:00
fixed the issue with Remaining Qty
This commit is contained in:
parent
7935a39bc4
commit
a9da4d333a
|
@ -395,14 +395,30 @@ BEGIN
|
||||||
END//
|
END//
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
||||||
|
CREATE FUNCTION astute.`submit_invoice_fun`(invNo varchar(20)) RETURNS varchar(20) CHARSET utf8
|
||||||
|
BEGIN
|
||||||
|
DECLARE po_no varchar(20);
|
||||||
|
declare new_invoice_no varchar(20);
|
||||||
|
-- UPDATE INVOICE SET INV_STATUS = 2 WHERE INV_NO = invNo;
|
||||||
|
SELECT PO_NUM INTO po_no FROM INVOICE WHERE INV_NO = invNo;
|
||||||
|
SET new_invoice_no = generate_final_inv_number(po_no);
|
||||||
|
UPDATE INVOICE SET INV_NO = new_invoice_no, INV_STATUS = 2, submitted_date_time = current_timestamp() WHERE INV_NO = invNo;
|
||||||
|
UPDATE PO SET INV_SEQ = INV_SEQ + 1 WHERE PO_NUM = po_no;
|
||||||
|
RETURN new_invoice_no;
|
||||||
|
END;
|
||||||
|
|
||||||
|
|
||||||
-- Dumping structure for function astute.get_previously_billed_amt
|
-- Dumping structure for function astute.get_previously_billed_amt
|
||||||
DELIMITER //
|
DELIMITER //
|
||||||
CREATE DEFINER=`root`@`localhost` FUNCTION `get_previously_billed_amt`(po_no varchar(20)) RETURNS double(10,2)
|
CREATE FUNCTION astute.`get_previously_billed_amt`(po_no varchar(20), inv_no_in varchar(20)) RETURNS double(10,2)
|
||||||
BEGIN
|
BEGIN
|
||||||
declare billed_amt double(10,2);
|
declare billed_amt double(10,2);
|
||||||
SELECT sum(bill_amt) INTO billed_amt FROM invoice WHERE invoice.PO_num = po_no and inv_status <> 3;
|
declare submitted_datetime timestamp;
|
||||||
|
SELECT submitted_date_time INTO submitted_datetime FROM INVOICE WHERE invoice.inv_no = inv_no_in;
|
||||||
|
SELECT ifnull(sum(bill_amt),0) INTO billed_amt FROM invoice WHERE invoice.PO_num = po_no and inv_status = 2 and submitted_date_time < submitted_datetime ;
|
||||||
return billed_amt;
|
return billed_amt;
|
||||||
END//
|
END;
|
||||||
|
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
||||||
-- Dumping structure for table astute.invoice
|
-- Dumping structure for table astute.invoice
|
||||||
|
@ -730,29 +746,16 @@ DELIMITER ;
|
||||||
|
|
||||||
-- Dumping structure for procedure astute.update_all_remaining_quantities
|
-- Dumping structure for procedure astute.update_all_remaining_quantities
|
||||||
DELIMITER //
|
DELIMITER //
|
||||||
CREATE DEFINER=`root`@`localhost` PROCEDURE `update_all_remaining_quantities`(invNo varchar(20))
|
DROP PROCEDURE IF EXISTS astute.update_all_remaining_quantities;
|
||||||
|
CREATE PROCEDURE astute.`update_all_remaining_quantities`(invNo varchar(20))
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
||||||
DECLARE po_line_item_no int;
|
DECLARE po_num_in VARCHAR(20);
|
||||||
DECLARE remaining_qty double;
|
|
||||||
DECLARE finished INTEGER DEFAULT 0;
|
SELECT PO_NUM INTO po_num_in FROM invoice where inv_no = invNo;
|
||||||
DECLARE p_finished INTEGER DEFAULT 0;
|
UPDATE PO_DETAIL SET remaining_qty = get_remaining_qty_fun(po_num_in,'',line_item_no);
|
||||||
DECLARE done boolean DEFAULT FALSE;
|
END;
|
||||||
|
|
||||||
DECLARE po_line_items CURSOR FOR select distinct po_line_item_num from invoice_detail where inv_num = invNo;
|
|
||||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET p_finished = 1;
|
|
||||||
OPEN po_line_items;
|
|
||||||
po_loop: LOOP
|
|
||||||
FETCH po_line_items INTO po_line_item_no;
|
|
||||||
IF p_finished = 1 THEN
|
|
||||||
LEAVE po_loop;
|
|
||||||
END IF;
|
|
||||||
BEGIN
|
|
||||||
SET remaining_qty = update_remaining_qty_fun('',invNo,po_line_item_no);
|
|
||||||
END;
|
|
||||||
END LOOP po_loop;
|
|
||||||
CLOSE po_line_items;
|
|
||||||
END//
|
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
||||||
CREATE FUNCTION astute.`get_draft_remaining_qty_fun`(inv_num_in varchar(40), item_no_in int) RETURNS double
|
CREATE FUNCTION astute.`get_draft_remaining_qty_fun`(inv_num_in varchar(40), item_no_in int) RETURNS double
|
||||||
|
@ -771,28 +774,28 @@ END;
|
||||||
|
|
||||||
-- Dumping structure for function astute.update_remaining_qty_fun
|
-- Dumping structure for function astute.update_remaining_qty_fun
|
||||||
DELIMITER //
|
DELIMITER //
|
||||||
CREATE DEFINER=`root`@`localhost` FUNCTION `update_remaining_qty_fun`(po_no_in varchar(40), inv_num_in varchar(40), item_no_in int) RETURNS double
|
CREATE FUNCTION astute.`update_remaining_qty_fun`(po_no_in varchar(40), inv_num_in varchar(40), item_no_in int) RETURNS double
|
||||||
BEGIN
|
BEGIN
|
||||||
DECLARE rem_qty double;
|
DECLARE rem_qty double;
|
||||||
DECLARE po_no varchar(40);
|
DECLARE po_no varchar(40);
|
||||||
if inv_num_in <> null or inv_num_in <> '' THEN
|
if inv_num_in <> null or inv_num_in <> '' THEN
|
||||||
SELECT po_num INTO po_no FROM invoice where inv_no = inv_num_in;
|
SELECT po_num INTO po_no FROM invoice where inv_no = inv_num_in;
|
||||||
else
|
else
|
||||||
set po_no = po_no_in;
|
set po_no = po_no_in;
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
select po_detail.qty - ifnull(sum(invoice_detail.qty),0) into rem_qty from invoice_detail, invoice, po_detail
|
select po_detail.qty - ifnull(sum(invoice_detail.qty),0) into rem_qty from invoice_detail, invoice, po_detail
|
||||||
where invoice_detail.inv_num in (select inv_no from invoice where invoice.PO_num = po_no)
|
where invoice_detail.inv_num in (select inv_no from invoice where invoice.PO_num = po_no)
|
||||||
and invoice_detail.po_line_item_num = item_no_in
|
and invoice_detail.po_line_item_num = item_no_in
|
||||||
and po_detail.PO_num = po_no
|
and po_detail.PO_num = po_no
|
||||||
and invoice.PO_num = po_detail.PO_num
|
and invoice.PO_num = po_detail.PO_num
|
||||||
and invoice.inv_no = invoice_detail.inv_num
|
and invoice.inv_no = invoice_detail.inv_num
|
||||||
and invoice.inv_status = 2
|
and (invoice.inv_status = 2)
|
||||||
and invoice_detail.po_line_item_num = po_detail.line_item_no;
|
and invoice_detail.po_line_item_num = po_detail.line_item_no;
|
||||||
|
|
||||||
update po_detail set remaining_qty = rem_qty where PO_num = po_no and line_item_no = item_no_in;
|
update po_detail set remaining_qty = rem_qty where PO_num = po_no and line_item_no = item_no_in;
|
||||||
return rem_qty;
|
return rem_qty;
|
||||||
END//
|
END;
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
||||||
CREATE FUNCTION astute.`is_po_fulfilled`(po_no varchar(20)) RETURNS int(1)
|
CREATE FUNCTION astute.`is_po_fulfilled`(po_no varchar(20)) RETURNS int(1)
|
||||||
|
|
|
@ -43,7 +43,7 @@ public class SqlDAO extends DAO {
|
||||||
try {
|
try {
|
||||||
List<PO> pos = new ArrayList<>();
|
List<PO> pos = new ArrayList<>();
|
||||||
Statement stmt = conn.createStatement();
|
Statement stmt = conn.createStatement();
|
||||||
String sql = "SELECT PO_num, contract_num, PO_date, customer_id, contract_amt, astute_project_num , title, get_previously_billed_amt(PO_num), inv_seq, notes, final, isAnyInvInDraft(PO_num), is_po_fulfilled(PO_num) as fulfilled FROM PO ";
|
String sql = "SELECT PO_num, contract_num, PO_date, customer_id, contract_amt, astute_project_num , title, 0, inv_seq, notes, final, isAnyInvInDraft(PO_num), is_po_fulfilled(PO_num) as fulfilled FROM PO ";
|
||||||
if (PONum != null && !PONum.isEmpty()) {
|
if (PONum != null && !PONum.isEmpty()) {
|
||||||
sql += "WHERE UPPER(PO_num) = '" + PONum.toUpperCase() + "'";
|
sql += "WHERE UPPER(PO_num) = '" + PONum.toUpperCase() + "'";
|
||||||
} else if (contractNum != null && !contractNum.isEmpty()) {
|
} else if (contractNum != null && !contractNum.isEmpty()) {
|
||||||
|
@ -408,16 +408,18 @@ public class SqlDAO extends DAO {
|
||||||
=============================== Invoice Methods ===============================================
|
=============================== Invoice Methods ===============================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public Double getPreviouslyBilledAmount(String poNum) throws AstuteException {
|
public Double getPreviouslyBilledAmount(String poNum, String invoiceNumber) throws AstuteException {
|
||||||
try {
|
try {
|
||||||
Double billedAmt = new Double(0);
|
// TODO remainingQuantity not used, need to take it out from signature
|
||||||
Statement stmt = conn.createStatement();
|
System.out.println("Calling create_po_detail Procedure");
|
||||||
String sql = "SELECT sum(bill_amt) FROM invoice WHERE invoice.PO_num = '" + poNum + "'";
|
double billAmt=0.0;
|
||||||
ResultSet rs = stmt.executeQuery(sql);
|
CallableStatement stmt = conn.prepareCall("{call get_previously_billed_amt(?,?)}");
|
||||||
while (rs.next()) {
|
stmt.registerOutParameter(1,Types.DOUBLE);
|
||||||
billedAmt = rs.getDouble(1);
|
stmt.setString(2, poNum);
|
||||||
}
|
stmt.setString(3, invoiceNumber);
|
||||||
return billedAmt;
|
stmt.execute();
|
||||||
|
billAmt = stmt.getDouble(1);
|
||||||
|
return billAmt;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw new AstuteException(DB_ERROR,e.getMessage());
|
throw new AstuteException(DB_ERROR,e.getMessage());
|
||||||
|
@ -486,7 +488,7 @@ public class SqlDAO extends DAO {
|
||||||
String customerId = po.getCustomerId();
|
String customerId = po.getCustomerId();
|
||||||
Customer customer = getCustomers(customerId).get(0);
|
Customer customer = getCustomers(customerId).get(0);
|
||||||
|
|
||||||
Double previouslyBilledAmt = getPreviouslyBilledAmount(PONo);
|
Double previouslyBilledAmt = getPreviouslyBilledAmount(PONo,invoiceNumber);
|
||||||
|
|
||||||
if (invoice.getInvoiceStatus()==2) {
|
if (invoice.getInvoiceStatus()==2) {
|
||||||
// TODO subtract current invoice's bill amount from previouslyBilledAmt
|
// TODO subtract current invoice's bill amount from previouslyBilledAmt
|
||||||
|
@ -795,11 +797,14 @@ public class SqlDAO extends DAO {
|
||||||
|
|
||||||
public void submitInvoice(String InvoiceNumber) throws AstuteException {
|
public void submitInvoice(String InvoiceNumber) throws AstuteException {
|
||||||
try {
|
try {
|
||||||
System.out.println("Calling submit_invoice Procedure ");
|
System.out.println("Calling submit_invoice_fun Procedure ");
|
||||||
System.out.println("invoiceNum is "+InvoiceNumber);
|
System.out.println("invoiceNum is "+InvoiceNumber);
|
||||||
CallableStatement stmt = conn.prepareCall("{call submit_invoice(?)}");
|
CallableStatement stmt = conn.prepareCall("{? = call submit_invoice_fun(?)}");
|
||||||
stmt.setString(1, InvoiceNumber);
|
stmt.registerOutParameter(1,Types.VARCHAR);
|
||||||
stmt.executeUpdate();
|
stmt.setString(2, InvoiceNumber);
|
||||||
|
stmt.execute();
|
||||||
|
String newInvoiceNumber = stmt.getString(1);
|
||||||
|
updateAllRemainingQuantities(newInvoiceNumber);
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw new AstuteException(DB_ERROR,e.getMessage());
|
throw new AstuteException(DB_ERROR,e.getMessage());
|
||||||
|
|
Loading…
Reference in New Issue
Block a user