Fixed defects.

This commit is contained in:
gopi17701 2019-01-26 21:01:30 -05:00
parent fc50520d67
commit b497b7bdc3
12 changed files with 345 additions and 66 deletions

View File

@ -80,10 +80,19 @@
<tr>
<td style="width: 10%">
<span class="input-group-text">Check# / ACH transaction#*</span>
<span class="input-group-text">Check#</span>
</td>
<td colspan="7">
<input type="text" class="form-control" #incheckTransactionNo>
<input type="text" class="form-control" #incheckNo>
</td>
</tr>
<tr>
<td style="width: 10%">
<span class="input-group-text">Transaction#</span>
</td>
<td colspan="7">
<input type="text" class="form-control" #inTransactionNo>
</td>
</tr>
@ -94,7 +103,7 @@
<div class="modal-footer">
<button class="btn btn-success" type="button"
[disabled]="!(chosenInv && inPaymentReceived.value && chosenPaymentType && inDateReceived.value)"
(click)="addInvoicePayment(chosenInv, null, chosenPaymentType, inDateReceived.value, inPaymentReceived.value.replace('$', '').replace(',', ''), incheckTransactionNo.value,new)">
(click)="addInvoicePayment(chosenInv, null, chosenPaymentType, inDateReceived.value, inPaymentReceived.value.replace('$', '').replace(',', ''), incheckNo.value, inTransactionNo.value, new)">
<!--(click)="addInvoicePayment(chosenInv, null, chosenPaymentType, null, inDateReceived.value, inPaymentReceived.value, new)">-->
Add
</button>
@ -154,10 +163,19 @@
<tr>
<td style="width: 10%">
<span class="input-group-text">Check# / ACH transaction#*</span>
<span class="input-group-text">Check#</span>
</td>
<td colspan="7">
<input type="text" class="form-control" #incheckTransactionNo [value]="selected.checkTransactionNo">
<input type="text" class="form-control" #incheckNo [value]="selected.checkNo">
</td>
</tr>
<tr>
<td style="width: 10%">
<span class="input-group-text">Transaction#</span>
</td>
<td colspan="7">
<input type="text" class="form-control" #intransactionNo [value]="selected.transactionNo">
</td>
</tr>
@ -166,8 +184,8 @@
</div>
<div class="modal-footer">
<button class="btn btn-warning" type="button"
[disabled]="!(invoiceSelect.value && inPaymentReceived.value && inDateReceived.value && incheckTransactionNo)"
(click)="updateInvoicePayment(invoiceSelect.value, selected.invoicePaymentId, selected.paymentTypeId, inDateReceived.value, inPaymentReceived.value.substr(1).replace(',', ''), incheckTransactionNo.value, edit)">
[disabled]="!(invoiceSelect.value && inPaymentReceived.value && inDateReceived.value)"
(click)="updateInvoicePayment(invoiceSelect.value, selected.invoicePaymentId, selected.paymentTypeId, inDateReceived.value, inPaymentReceived.value.substr(1).replace(',', ''), incheckNo.value, intransactionNo.value, edit)">
Update
</button>
<button type="button" class="btn btn-danger" (click)="close(edit)">Cancel</button>

View File

@ -22,7 +22,8 @@ export class InvoicePaymentComponent implements OnInit {
{headerName: 'Payment Received', field: 'invoiceAmount'},
{headerName: 'Date Received', field: 'paymentDate'},
{headerName: 'Payment Type', field: 'paymentType'},
{headerName: 'Check / ACH Transaction #', field: 'checkTransactionNo'}
{headerName: 'Check / ACH #', field: 'checkNo'},
{headerName: 'Transaction #', field: 'transactionNo'}
];
@ -50,14 +51,15 @@ export class InvoicePaymentComponent implements OnInit {
}
}
addInvoicePayment(invoiceNum, invoicePaymentId, paymentTypeId, paymentDate, paymentReceived, checkTransactionNo, ref) {
addInvoicePayment(invoiceNum, invoicePaymentId, paymentTypeId, paymentDate, paymentReceived, checkNo, transactionNo, ref) {
let invoicePaymentData = {
"invoiceNum": invoiceNum,
"invoicePaymentId":invoicePaymentId,
"paymentTypeId":paymentTypeId,
"paymentDate": paymentDate,
"invoiceAmount": paymentReceived,
"checkTransactionNo": checkTransactionNo
"checkNo": checkNo,
"transactionNo": transactionNo
};
this.astuteClientService.addInvoicePayment(invoicePaymentData).then((data) => {
if (data) {
@ -71,14 +73,15 @@ export class InvoicePaymentComponent implements OnInit {
});
}
updateInvoicePayment(invoiceNum, invoicePaymentId, paymentTypeId, dateReceived, paymentReceived, checkTransactionNo, ref) {
updateInvoicePayment(invoiceNum, invoicePaymentId, paymentTypeId, dateReceived, paymentReceived, checkNo, transactionNo, ref) {
const invoicePaymentData = {
"invoiceNum": invoiceNum,
"invoicePaymentId": invoicePaymentId,
"paymentTypeId": paymentTypeId,
"paymentDate": dateReceived,
"invoiceAmount": paymentReceived,
"checkTransactionNo": checkTransactionNo
"checkNo": checkNo,
"transactionNo": transactionNo
};
this.astuteClientService.updateInvoicePayment(invoiceNum, invoicePaymentId, invoicePaymentData).then((data) => {

View File

@ -272,8 +272,8 @@
<!--<p *ngIf="chosenInv.invoiceStatus == 1">-->
<!--<select class="custom-select"-->
<!--(change)="pushOntoSelectedDetail(inNumIn.value, newInDetails.length + 1, selectedPODetails[poDetSelec.value].lineItemNo,-->
<!--selectedPODetails[poDetSelec.value].feeTypeId, selectedPODetails[poDetSelec.value].serviceTypeId,-->
<!--selectedPODetails[poDetSelec.value].serviceDesc, 1, 0, selectedPODetails[poDetSelec.value].remainingQty)"-->
<!--selectedPODetails[poDetSelec.value].feeTypeId,-->
<!--selectedPODetails[poDetSelec.value].serviceDesc, 0, selectedPODetails[poDetSelec.value].fee)"-->
<!--[disabled]="!selectedPODetails.length && chosenInv.invoiceStatus !== 1"-->
<!--#poDetSelec>-->
<!--<option>Add new line item...</option>-->
@ -356,7 +356,6 @@
<!--Invoice Footer-->
<div class="modal-body" *ngIf="chosenInv">
<p class="h4 text-right">Footer</p>
<hr>
<div class="input-group mb-3">
<div class="input-group-prepend">

View File

@ -28,7 +28,7 @@ export class InvoiceComponent implements OnInit {
{headerName: 'Date', field: 'invoiceDate'},
{headerName: 'Sales Order Number', field: 'poNum'},
{headerName: 'Change Order Number', field: 'changeOrderNum'},
{headerName: 'Payment', field: 'pmtStatusDesc'},
{headerName: 'Outstanding Balance', field: 'outstandingBalance'},
{headerName: 'Bll Amount', field: 'billAmt'}
];
newInDetails = [];
@ -150,6 +150,9 @@ export class InvoiceComponent implements OnInit {
this.source.forEach((row) => {
row.billAmt = formatCurrency(row.billAmt, 'en-US', '$', 'USD');
});
this.source.forEach((row) => {
row.outstandingBalance = formatCurrency(row.outstandingBalance, 'en-US', '$', 'USD');
});
});
this.astuteClientService.getCustomers().then((data) => {

View File

@ -32,6 +32,19 @@ CREATE TABLE IF NOT EXISTS `change_order` (
/*!40000 ALTER TABLE `change_order` DISABLE KEYS */;
/*!40000 ALTER TABLE `change_order` ENABLE KEYS */;
-- Dumping structure for function astute.create_customer_contact_fun
DELIMITER //
CREATE DEFINER=`root`@`localhost` FUNCTION `create_customer_contact_fun`(customer_id varchar(20), contact_id int, name varchar(100), title varchar(50), work_phone int, work_phone_ext int, mobile int, fax int, email varchar(100), address varchar(500)) RETURNS varchar(20) CHARSET utf8
BEGIN
DECLARE last_inserted_id varchar(20);
INSERT INTO astute.customer_contact
(customer_id, contact_id, name, title, work_phone, work_phone_ext, mobile, fax, email, address)
VALUES ('customer_id', contact_id, 'name', 'title', work_phone, work_phone_ext, mobile, fax, 'email', 'address');
SELECT LAST_INSERT_ID() into last_inserted_id;
return last_inserted_id;
END//
DELIMITER ;
-- Dumping structure for function astute.create_customer_fun
DELIMITER //
CREATE DEFINER=`root`@`localhost` FUNCTION `create_customer_fun`(customerid varchar(20), customerName varchar(100), billToDept varchar(100), add1In varchar(100), add2In varchar(100), cityIn varchar(50), stateIn varchar(20), zipIn int(5), zipLast4In int(4), emailIn varchar(50), phoneIn varchar(20), faxIn varchar(20)) RETURNS varchar(20) CHARSET utf8
@ -107,6 +120,25 @@ INSERT INTO `customer` (`customer_id`, `customer_name`, `bill_to_dept`, `add1`,
('VDOT', 'Virginia Depart of Transportation', 'Billing Department', '13134 Saturn Drive', 'Unit 100', 'McLean', 'VA', 22043, 0, 'Billing@vdot.gov', '(703) 122-1234', '(703) 122-1212', NULL);
/*!40000 ALTER TABLE `customer` ENABLE KEYS */;
-- Dumping structure for table astute.customer_contact
CREATE TABLE IF NOT EXISTS `customer_contact` (
`customer_id` varchar(20) NOT NULL,
`contact_id` int(11) NOT NULL,
`name` varchar(100) NOT NULL,
`title` varchar(50) NOT NULL,
`work_phone` int(10) DEFAULT NULL,
`work_phone_ext` int(10) DEFAULT NULL,
`mobile` int(10) DEFAULT NULL,
`fax` int(10) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
`address` varchar(500) DEFAULT NULL,
PRIMARY KEY (`customer_id`,`contact_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Dumping data for table astute.customer_contact: ~0 rows (approximately)
/*!40000 ALTER TABLE `customer_contact` DISABLE KEYS */;
/*!40000 ALTER TABLE `customer_contact` ENABLE KEYS */;
-- Dumping structure for function astute.delete_custmer
DELIMITER //
CREATE DEFINER=`root`@`localhost` FUNCTION `delete_custmer`(customer_id_in varchar(20)) RETURNS varchar(40) CHARSET utf8
@ -130,6 +162,15 @@ BEGIN
END//
DELIMITER ;
-- Dumping structure for function astute.delete_custmer_contact
DELIMITER //
CREATE DEFINER=`root`@`localhost` FUNCTION `delete_custmer_contact`(customer_id_in varchar(20), customer_contact_id int) RETURNS varchar(40) CHARSET utf8
BEGIN
delete from customer_contact where customer_id = customer_id_in and contact_id = customer_contact_id;
RETURN 'SUCCESS';
END//
DELIMITER ;
-- Dumping structure for function astute.delete_invoice
DELIMITER //
CREATE DEFINER=`root`@`localhost` FUNCTION `delete_invoice`(inv_no_in varchar(20)) RETURNS varchar(40) CHARSET utf8
@ -280,6 +321,20 @@ declare customer_id_out varchar(20);
END//
DELIMITER ;
-- Dumping structure for function astute.get_outstanding_inv_balance
DELIMITER //
CREATE DEFINER=`root`@`localhost` FUNCTION `get_outstanding_inv_balance`(invno varchar(20)) RETURNS double(10,2)
BEGIN
declare outstanding_amt double(10,2);
SELECT invoice.bill_amt - sum(invoice_amount) INTO outstanding_amt
FROM invoice join invoice_payment on invoice.inv_no = invoice_payment.inv_no
where invoice.inv_no = invno
group by invoice_payment.inv_no;
return outstanding_amt;
END//
DELIMITER ;
-- Dumping structure for function astute.get_payment_status_name
DELIMITER //
CREATE DEFINER=`root`@`localhost` FUNCTION `get_payment_status_name`(pmt_status int) RETURNS varchar(20) CHARSET utf8
@ -325,11 +380,12 @@ CREATE TABLE IF NOT EXISTS `invoice` (
CONSTRAINT `fk_InvMaster_POnum` FOREIGN KEY (`PO_num`) REFERENCES `po` (`PO_num`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Dumping data for table astute.invoice: ~4 rows (approximately)
-- Dumping data for table astute.invoice: ~3 rows (approximately)
/*!40000 ALTER TABLE `invoice` DISABLE KEYS */;
INSERT INTO `invoice` (`inv_no`, `inv_date`, `PO_num`, `bill_amt`, `special_notes`, `certification`, `inv_status`, `pmt_status`) VALUES
('MDO-01_0108_1', '2019-01-08', 'MDOT-123', 30250, 'Test', 'Certified that the above items and rates are in accordance with the contractual agreement as verified by the undersigned', 3, 1),
('MDO-01_DRAFT_157', '2019-01-15', 'MDOT-123', 2500, 'Trest', 'Certified that the above items and rates are in accordance with the contractual agreement as verified by the undersigned', 1, 1),
('VDO-01_DRAFT_351', '2019-01-22', 'VDOT-54321', 2000, 'Test', 'Certified that the above items and rates are in accordance with the contractual agreement as verified by the undersigned', 1, 1),
('VDO-02_0107_2', '2019-01-07', 'ABC-123', 1450, 'Test', 'Certified that the above items and rates are in accordance with the contractual agreement as verified by the undersigned', 3, 1),
('VDO-02_0108_3', '2019-01-08', 'ABC-123', 5250, 'Test', 'Certified that the above items and rates are in accordance with the contractual agreement as verified by the undersigned', 2, 1);
/*!40000 ALTER TABLE `invoice` ENABLE KEYS */;
@ -350,7 +406,7 @@ CREATE TABLE IF NOT EXISTS `invoice_detail` (
CONSTRAINT `fk_InvDetail_InvNum` FOREIGN KEY (`inv_num`) REFERENCES `invoice` (`inv_no`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Dumping data for table astute.invoice_detail: ~12 rows (approximately)
-- Dumping data for table astute.invoice_detail: ~14 rows (approximately)
/*!40000 ALTER TABLE `invoice_detail` DISABLE KEYS */;
INSERT INTO `invoice_detail` (`inv_num`, `line_item_num`, `PO_line_item_num`, `service_type_id`, `description`, `qty`, `fee`, `fee_type_id`) VALUES
('MDO-01_0108_1', 1, 1, 2, 'Design', 0.5, 2500, 1),
@ -360,6 +416,9 @@ INSERT INTO `invoice_detail` (`inv_num`, `line_item_num`, `PO_line_item_num`, `s
('MDO-01_0108_1', 5, 5, 5, 'Forensic Investigation', 0.5, 5000, 1),
('MDO-01_0108_1', 6, -1, 1, 'Out of Pocket Expenses - gas', 50, 20, 1),
('MDO-01_DRAFT_157', 1, 1, 2, 'Design', 1, 2500, 1),
('VDO-01_DRAFT_351', 1, 1, 1, 'Study existing designs', 0.5, 1000, 1),
('VDO-01_DRAFT_351', 2, 2, 2, 'Modify design', 0.5, 2000, 1),
('VDO-01_DRAFT_351', 3, 3, 4, 'Cost estimation', 0.5, 1000, 1),
('VDO-02_0107_2', 1, 1, 2, 'Design', 0.25, 5000, 1),
('VDO-02_0107_2', 2, -1, 1, 'Out of Pocket Expenses', 20, 10, 1),
('VDO-02_0108_3', 1, 1, 2, 'Design', 0.25, 5000, 1),
@ -385,20 +444,22 @@ CREATE TABLE IF NOT EXISTS `invoice_payment` (
`invoice_amount` double NOT NULL,
`payment_date` date NOT NULL,
`invoice_payment_id` int(11) NOT NULL AUTO_INCREMENT,
`check_transaction_no` varchar(50) NOT NULL,
`check_no` varchar(50) DEFAULT NULL,
`void_payment_status` int(11) NOT NULL DEFAULT '0',
`transaction_no` varchar(50) DEFAULT NULL,
PRIMARY KEY (`invoice_payment_id`),
KEY `fk_inv_pmt_inv_no` (`inv_no`),
KEY `fk_pinv_pmt_type` (`invoice_payment_type`),
CONSTRAINT `fk_inv_pmt_inv_no` FOREIGN KEY (`inv_no`) REFERENCES `invoice` (`inv_no`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_pinv_pmt_type` FOREIGN KEY (`invoice_payment_type`) REFERENCES `payment_type` (`payment_type_id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;
-- Dumping data for table astute.invoice_payment: ~0 rows (approximately)
-- Dumping data for table astute.invoice_payment: ~2 rows (approximately)
/*!40000 ALTER TABLE `invoice_payment` DISABLE KEYS */;
INSERT INTO `invoice_payment` (`inv_no`, `invoice_payment_type`, `invoice_amount`, `payment_date`, `invoice_payment_id`, `check_transaction_no`, `void_payment_status`) VALUES
('VDO-02_0107_2', 2, 5000, '2019-01-09', 13, '123456', 0),
('VDO-02_0107_2', 2, 5000, '2019-01-08', 15, '123123', 0);
INSERT INTO `invoice_payment` (`inv_no`, `invoice_payment_type`, `invoice_amount`, `payment_date`, `invoice_payment_id`, `check_no`, `void_payment_status`, `transaction_no`) VALUES
('VDO-02_0107_2', 2, 5000, '2019-01-09', 13, '123123', 0, '456456'),
('VDO-02_0107_2', 2, 5000, '2019-01-08', 15, '123124', 0, '456457'),
('VDO-02_0108_3', 2, 0.1, '2019-01-22', 16, 'asdfasdf', 0, 'asdfasdf');
/*!40000 ALTER TABLE `invoice_payment` ENABLE KEYS */;
-- Dumping structure for table astute.invoice_status
@ -512,9 +573,9 @@ INSERT INTO `po_detail` (`PO_num`, `line_item_no`, `service_desc`, `fee_type_id`
('MDOT-123', 3, 'Peer Review', 2, 100, 3, 250, 100),
('MDOT-123', 4, 'Cost Estimation', 2, 100, 4, 250, 100),
('MDOT-123', 5, 'Forensic Investigation', 1, 1, 5, 5000, 1),
('VDOT-54321', 1, 'Study existing designs', 1, 1, 1, 1000, 1),
('VDOT-54321', 2, 'Modify design', 1, 1, 2, 2000, 1),
('VDOT-54321', 3, 'Cost estimation', 1, 1, 4, 1000, 1),
('VDOT-54321', 1, 'Study existing designs', 1, 1, 1, 1000, 0.5),
('VDOT-54321', 2, 'Modify design', 1, 1, 2, 2000, 0.5),
('VDOT-54321', 3, 'Cost estimation', 1, 1, 4, 1000, 0.5),
('VDOT-54321', 4, 'Peer Review', 2, 100, 3, 100, 100);
/*!40000 ALTER TABLE `po_detail` ENABLE KEYS */;
@ -533,7 +594,8 @@ INSERT INTO `service_type` (`service_type_id`, `desc`) VALUES
(3, 'Peer Review'),
(4, 'Cost Estimation'),
(5, 'Forensic Investigation'),
(6, 'Out-of-pocket Expense');
(6, 'Out-of-pocket Expense'),
(7, 'TEMP');
/*!40000 ALTER TABLE `service_type` ENABLE KEYS */;
-- Dumping structure for table astute.session
@ -547,13 +609,14 @@ CREATE TABLE IF NOT EXISTS `session` (
CONSTRAINT `fk_session_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Dumping data for table astute.session: ~22 rows (approximately)
-- Dumping data for table astute.session: ~21 rows (approximately)
/*!40000 ALTER TABLE `session` DISABLE KEYS */;
INSERT INTO `session` (`session_id`, `user_id`, `session_start_date`, `session_end_date`) VALUES
('042ef08346f84d52b98a22dab48c7b1c', 1, NULL, NULL),
('058cdb87447645da9ec265e566af834c', 1, NULL, NULL),
('2b4382383bd143f9b995c4321fa6d1ac', 1, NULL, NULL),
('3492c28027db4033987a62d80714b8d0', 1, NULL, NULL),
('3779d52b38ea42898e268ad0f151ae64', 1, NULL, NULL),
('37ac54b5cf5241b080b019d23c151fd8', 1, NULL, NULL),
('46d91a474f4544a2ab60002f799383a7', 1, NULL, NULL),
('4f48b60481ab4729a26b809c077fc7c0', 1, NULL, NULL),
@ -567,7 +630,9 @@ INSERT INTO `session` (`session_id`, `user_id`, `session_start_date`, `session_e
('a067451faf5f401680562bb291295629', 1, NULL, NULL),
('abeefc05fe8e48e5bac7ffab65c85ca6', 1, NULL, NULL),
('b356aab1dbe84d4f9eea9c1cd965c9a4', 1, NULL, NULL),
('b77de6ef2b4b4e0487689c689f246ab5', 1, NULL, NULL),
('b9e4507fcc8f487eaf3eb3a9f3b378ed', 1, NULL, NULL),
('d14cb15f91454c3ba3bbfda60444bb05', 1, NULL, NULL),
('d6387d93d84341fc91a0c4a5cbf266db', 1, NULL, NULL),
('d98f7e0c9a934afaa89f0f0545c1c81c', 1, NULL, NULL),
('dcb4b261f925464bb69ff685c1c6134d', 1, NULL, NULL),

View File

@ -3,12 +3,13 @@ package com.astute.dao;
import com.astute.exceptions.AstuteException;
import com.astute.model.*;
import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.*;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import static com.astute.exceptions.AstuteException.DB_ERROR;
public abstract class DAO {
public static DAO dao;
@ -102,6 +103,11 @@ public abstract class DAO {
public abstract List<ServiceType> getServiceTypes() throws AstuteException;
public abstract void createServiceType(String desc) throws AstuteException;
public abstract void updateServiceType(int serviceTypeId, String desc) throws AstuteException;
public abstract void deleteServiceType(int serviceTypeId) throws AstuteException;
public abstract List<Invoice> getInvoiceMaster(String invoiceNumber, int pmtStatus) throws AstuteException;
@ -129,6 +135,8 @@ public abstract class DAO {
public abstract List<Invoice> getSubmittedInvoiceNumbers() throws AstuteException;
public abstract List<PaymentStatus> getPaymentStatuses() throws AstuteException;
public abstract List<Customer> getCustomers(String customerId) throws AstuteException;
public abstract Customer getCustomer(String poNumber) throws AstuteException;
@ -139,7 +147,15 @@ public abstract class DAO {
public abstract void deleteCustomer(String customerId) throws AstuteException;
public abstract List<PaymentStatus> getPaymentStatuses() throws AstuteException;
/*=============================== Customer Contacts Methods ===============================================
*/
public abstract List<CustomerContact> getCustomerContacts(String customerId) throws AstuteException;
public abstract String createCustomerContact(String customerId, String name,String title,int workPhone,int phExt,int mobile, int fax, String email, String address) throws AstuteException;
public abstract void updateCustomerContact(String customerId, int contactId, String name,String title,int workPhone,int phExt,int mobile, int fax, String email, String address) throws AstuteException;
public abstract void deleteCustomerContact(String customerId, int contactId) throws AstuteException;
// User and session method implementation
@ -163,9 +179,9 @@ public abstract class DAO {
public abstract List<InvoicePayment> getInvoicePayments(String invoiceNum) throws AstuteException;
public abstract void updateInvoicePayment(String invoiceNum, int invoicePaymentId, int InvoicePaymentTypeId, Double paymentAmount, Date paymentDate, String checkTransactionNo) throws AstuteException;
public abstract void updateInvoicePayment(String invoiceNum, int invoicePaymentId, int InvoicePaymentTypeId, Double paymentAmount, Date paymentDate, String checkNo, String transactionNo) throws AstuteException;
public abstract void createInvoicePayment(String invoiceNum, int invoicePaymentTypeId, Double paymentAmount, Date paymentDate, String checkTransactionNo) throws AstuteException;
public abstract void createInvoicePayment(String invoiceNum, int invoicePaymentTypeId, Double paymentAmount, Date paymentDate, String checkNo, String transactionNo) throws AstuteException;
public abstract List<PaymentType> getPaymentTypes() throws AstuteException;
}

View File

@ -267,6 +267,38 @@ public class SqlDAO extends DAO {
}
}
public void createServiceType(String desc) throws AstuteException {
try {
Statement stmt = conn.createStatement();
String sql = "INSERT INTO service_type (service_type_id, `desc`) VALUES ((SELECT MAX(service_type_id)+1 FROM SERVICE_TYPE B), desc)";
stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
throw new AstuteException(DB_ERROR,e.getMessage());
}
}
public void deleteServiceType(int serviceTypeId) throws AstuteException {
try {
Statement stmt = conn.createStatement();
String sql = "delete from service_type where service_type_id = '" + serviceTypeId;
stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
throw new AstuteException(DB_ERROR,e.getMessage());
}
};
public void updateServiceType(int serviceTypeId, String desc) throws AstuteException {
try {
Statement stmt = conn.createStatement();
String sql = "UPDATE service_type desc = '" + desc + "' WHERE service_type_id = " + serviceTypeId;
stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
throw new AstuteException(DB_ERROR,e.getMessage());
}
}
/*
=============================== Invoice Methods ===============================================
*/
@ -345,7 +377,8 @@ public class SqlDAO extends DAO {
Statement stmt = conn.createStatement();
String whereClause = " WHERE ";
boolean whereClauseIndicator = false;
String sql = "SELECT inv_no, inv_date, PO_num, pmt_status, bill_amt, special_notes, certification, inv_status, get_payment_status_name(pmt_status), get_customer_from_po(PO_num) FROM INVOICE ";
String sql = "SELECT inv_no, inv_date, PO_num, pmt_status, bill_amt, special_notes, certification, inv_status, get_payment_status_name(pmt_status), get_customer_from_po(PO_num), ifnull(get_outstanding_inv_balance(inv_no), bill_amt) FROM INVOICE ";
if (invoiceNumber != null && !invoiceNumber.isEmpty()) {
whereClause = whereClause + " UPPER(inv_no) = '"+ invoiceNumber.toUpperCase() +"'";
whereClauseIndicator = true;
@ -373,7 +406,8 @@ public class SqlDAO extends DAO {
int invoiceStatus = rs.getInt(8);
String paymentStatusDesc = rs.getString(9);
String customerId = rs.getString(10);
Invoice invoice = new Invoice(invNo, invdDate, PONo, paymentStatus, billAmt, specialNotes, certification, invoiceStatus, paymentStatusDesc, customerId);
double outstandingBalance = rs.getDouble(11);
Invoice invoice = new Invoice(invNo, invdDate, PONo, paymentStatus, billAmt, specialNotes, certification, invoiceStatus, paymentStatusDesc, customerId, outstandingBalance);
invoices.add(invoice);
}
return invoices;
@ -636,7 +670,7 @@ public class SqlDAO extends DAO {
while (resultSet.next()) {
invoiceNumber = resultSet.getString(1);
invoice = new Invoice(invoiceNumber,null,null,1,null,null,null,0, "Outstanding","");
invoice = new Invoice(invoiceNumber,null,null,1,null,null,null,0, "Outstanding","", 0);
invoices.add(invoice);
}
} catch (SQLException e) {
@ -791,6 +825,115 @@ public class SqlDAO extends DAO {
throw new AstuteException(DB_ERROR, e.getMessage());
}
}
/*=============================== Customer Contacts Methods ===============================================
*/
public List<CustomerContact> getCustomerContacts(String customerId) throws AstuteException {
try {
List<CustomerContact> contacts = new ArrayList<>();
Statement stmt = conn.createStatement();
String sql = "SELECT customer_id, contact_id, name, title, work_phone, work_phone_ext, mobile, fax, email, address, FROM astute.customer_contact";
if (customerId!=null && !customerId.isEmpty()) {
sql += " WHERE customer_id = '" + customerId + "'";
}
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
String customerID = rs.getString(1);
int contactId = rs.getInt(2);
String name = rs.getString(3);
String title = rs.getString(4);
int workPhone = rs.getInt(5);
int phoneExt = rs.getInt(6);
int mobile = rs.getInt(7);
int fax = rs.getInt(8);
String email = rs.getString(9);
String address = rs.getString(10);
CustomerContact contact = new CustomerContact(customerID, contactId, name, title, workPhone, phoneExt, mobile, fax, email, address);
contacts.add(contact);
}
return contacts;
} catch (SQLException e) {
e.printStackTrace();
throw new AstuteException(DB_ERROR,e.getMessage());
}
}
public String createCustomerContact(String customerId, String name,String title, int workPhone,int phExt,int mobile, int fax, String email, String address) throws AstuteException {
try {
CallableStatement stmt = conn.prepareCall("{? = call create_customer_contact_fun(?,?,?,?,?,?,?,?,?)}");
stmt.registerOutParameter(1, Types.INTEGER);
stmt.setString(2, customerId);
stmt.setString(3, name);
stmt.setString(4, title);
stmt.setInt(5, workPhone);
stmt.setInt(6, phExt);
stmt.setInt(7, mobile);
stmt.setInt(8, fax);
stmt.setString(9, email);
stmt.setString(10, address);
stmt.executeUpdate();
String customerIdOut = stmt.getString(1);
return customerIdOut;
} catch (SQLException e) {
e.printStackTrace();
throw new AstuteException(DB_ERROR,e.getMessage());
}
}
public void updateCustomerContact(String customerId, int contactId, String name,String title,int workPhone,int phExt,int mobile, int fax, String email, String address) throws
AstuteException {
try {
String sql = "UPDATE CUSTOMER_CONTACT ";
String updateClause = " SET ";
String whereClause = "";
if (customerId==null || customerId.isEmpty() || contactId <=0 ) {
throw new AstuteException(0, "CustomerId or contactId can't be null.");
} else {
whereClause = " WHERE customer_id ='" + customerId + "' and contact_id = " + contactId;
}
updateClause = updateClause + " name = '" + name + "',";
updateClause = updateClause + " title = '" + title + "',";
updateClause = updateClause + " workPhone = " + workPhone + ",";
updateClause = updateClause + " phext = " + phExt + ",";
updateClause = updateClause + " mobile = " + mobile + ",";
updateClause = updateClause + " fax = " + fax + ",";
updateClause = updateClause + " address = '" + address + "',";
updateClause = updateClause + " email = '" + email + "',";
if (!updateClause.equalsIgnoreCase(" SET ")) {
sql = sql + trimLastCharacter(updateClause, ",") + whereClause;
} else {
System.out.println(updateClause);
throw new AstuteException(0, "No values to update.");
}
System.out.println(sql);
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
throw new AstuteException(DB_ERROR,e.getMessage());
}
}
public void deleteCustomerContact(String customerId, int contactId) throws AstuteException {
String result = "";
try {
System.out.println("Calling delete_customer_contact DB function");
CallableStatement stmt = conn.prepareCall("{? = call delete_customer_contact(?,?)}");
stmt.registerOutParameter(1, Types.VARCHAR);
stmt.setString(2, customerId);
stmt.setInt(2, contactId);
stmt.executeUpdate();
result = stmt.getString(1);
System.out.println(result);
if (!result.equals("SUCCESS")) {
throw new AstuteException(DB_ERROR, result);
}
} catch (SQLException e) {
e.printStackTrace();
throw new AstuteException(DB_ERROR, e.getMessage());
}
}
/*
=============================== User/Session Methods ===============================================
*/
@ -948,7 +1091,7 @@ public class SqlDAO extends DAO {
try {
List<InvoicePayment> invoicePayments = new ArrayList<InvoicePayment>();
Statement stmt = conn.createStatement();
String sql = "SELECT invoice_payment_id, invoice_payment_type, get_payment_type(invoice_payment_type), invoice_amount, payment_date, inv_no, check_transaction_no FROM invoice_payment ";
String sql = "SELECT invoice_payment_id, invoice_payment_type, get_payment_type(invoice_payment_type), invoice_amount, payment_date, inv_no, check_no, transaction_no FROM invoice_payment ";
if (invoiceNum != null) {
sql += " WHERE inv_no = '" + invoiceNum + "'";
}
@ -960,8 +1103,9 @@ public class SqlDAO extends DAO {
Double paymentAmount = rs.getDouble(4);
Date paymentDate = rs.getDate(5);
String invNo = rs.getString(6);
String checkTransactionNo = rs.getString(7);
InvoicePayment invoicePayment = new InvoicePayment(invNo, invoicePaymentId, invoicePaymentTypeId, invoicePaymentType, paymentDate, paymentAmount, checkTransactionNo);
String checkNo = rs.getString(7);
String transactionNo = rs.getString(8);
InvoicePayment invoicePayment = new InvoicePayment(invNo, invoicePaymentId, invoicePaymentTypeId, invoicePaymentType, paymentDate, paymentAmount, checkNo, transactionNo);
invoicePayments.add(invoicePayment);
}
return invoicePayments;
@ -971,7 +1115,7 @@ public class SqlDAO extends DAO {
}
};
public void updateInvoicePayment(String invoiceNum, int invoicePaymentId, int invoicePaymentTypeId, Double paymentAmount, Date paymentDate, String checkTransactionNo) throws AstuteException {
public void updateInvoicePayment(String invoiceNum, int invoicePaymentId, int invoicePaymentTypeId, Double paymentAmount, Date paymentDate, String checkNo, String transactionNo) throws AstuteException {
try {
String sql = "UPDATE INVOICE_PAYMENT ";
String updateClause = " SET ";
@ -981,7 +1125,7 @@ public class SqlDAO extends DAO {
}
updateClause = updateClause + " invoice_payment_type = " + invoicePaymentTypeId + ", invoice_amount = " + paymentAmount + ", check_Transaction_No = '" + checkTransactionNo + "'";
updateClause = updateClause + " invoice_payment_type = " + invoicePaymentTypeId + ", invoice_amount = " + paymentAmount + ", check_No = '" + checkNo + "', transaction_no = '" + transactionNo + "'";
// if (paymentDate != null) {
updateClause = updateClause + ", payment_date = STR_TO_DATE('" + paymentDate + "', '%Y-%m-%d')";
// }
@ -998,10 +1142,10 @@ public class SqlDAO extends DAO {
}
public void createInvoicePayment(String invoiceNum, int invoicePaymentTypeId, Double paymentAmount, Date paymentDate, String checkTransactionNo) throws AstuteException{
public void createInvoicePayment(String invoiceNum, int invoicePaymentTypeId, Double paymentAmount, Date paymentDate, String checkNo, String transactionNo) throws AstuteException{
try {
String dateString = "STR_TO_DATE('" + paymentDate + "', '%Y-%m-%d')";
String sql = "insert into invoice_payment (inv_no, invoice_payment_type, invoice_amount, payment_date, check_transaction_no) values ('" + invoiceNum + "', " + invoicePaymentTypeId + ", " + paymentAmount + ", " + dateString + ", " + checkTransactionNo +")";
String sql = "insert into invoice_payment (inv_no, invoice_payment_type, invoice_amount, payment_date, check_no, transaction_no) values ('" + invoiceNum + "', " + invoicePaymentTypeId + ", " + paymentAmount + ", " + dateString + ", '" + checkNo +"', '" + transactionNo + "')";
Statement stmt = conn.createStatement();
System.out.println(sql);
stmt.execute(sql);

View File

@ -12,8 +12,9 @@ public class Invoice {
String certification;
int invoiceStatus;
String customerId;
double outstandingBalance;
public Invoice(String invoiceNumber, String invoiceDate, String poNum, int pmtStatus, Double billAmt, String specialNotes, String certification, int invoiceStatus, String pmtStatusDesc, String customerId) {
public Invoice(String invoiceNumber, String invoiceDate, String poNum, int pmtStatus, Double billAmt, String specialNotes, String certification, int invoiceStatus, String pmtStatusDesc, String customerId, double outstandingBalance) {
this.invoiceNumber = invoiceNumber;
this.invoiceDate = invoiceDate;
this.poNum = poNum;
@ -24,6 +25,7 @@ public class Invoice {
this.invoiceStatus = invoiceStatus;
this.pmtStatusDesc = pmtStatusDesc;
this.customerId = customerId;
this.outstandingBalance = outstandingBalance;
}
public String getInvoiceNumber() {
@ -114,4 +116,12 @@ public class Invoice {
public void setCustomerId(String customerId) {
this.customerId = customerId;
}
public double getOutstandingBalance() {
return outstandingBalance;
}
public void setOutstandingBalance(double outstandingBalance) {
this.outstandingBalance = outstandingBalance;
}
}

View File

@ -9,15 +9,18 @@ public class InvoicePayment {
String paymentType;
Date paymentDate;
Double invoiceAmount;
String checkTransactionNo;
public InvoicePayment(String invoiceNum, int invoicePaymentId, int paymentTypeId, String paymentType, Date paymentDate, Double invoiceAmount, String checkTransactionNo) {
String checkNo;
String transactionNo;
public InvoicePayment(String invoiceNum, int invoicePaymentId, int paymentTypeId, String paymentType, Date paymentDate, Double invoiceAmount, String checkNo, String transactionNo) {
this.invoiceNum = invoiceNum;
this.invoicePaymentId = invoicePaymentId;
this.paymentTypeId = paymentTypeId;
this.paymentType = paymentType;
this.paymentDate = paymentDate;
this.invoiceAmount = invoiceAmount;
this.checkTransactionNo = checkTransactionNo;
this.checkNo = checkNo;
this.transactionNo = transactionNo;
}
public String getInvoiceNum() {
@ -68,11 +71,19 @@ public class InvoicePayment {
this.invoiceAmount = invoiceAmount;
}
public String getCheckTransactionNo() {
return checkTransactionNo;
public String getCheckNo() {
return checkNo;
}
public void setCheckTransactionNo(String checkTransactionNo) {
this.checkTransactionNo = checkTransactionNo;
public void setCheckNo(String checkNo) {
this.checkNo = checkNo;
}
public String getTransactionNo() {
return transactionNo;
}
public void setTransactionNo(String transactionNo) {
this.transactionNo = transactionNo;
}
}

View File

@ -8,16 +8,18 @@ public class InvoicePaymentRequest {
String paymentType;
String paymentDate;
Double invoiceAmount;
String checkTransactionNo;
String checkNo;
String transactionNo;
public InvoicePaymentRequest(String invoiceNum, int invoicePaymentId, int paymentTypeId, String paymentType, String paymentDate, Double invoiceAmount, String checkTransactionNo) {
public InvoicePaymentRequest(String invoiceNum, int invoicePaymentId, int paymentTypeId, String paymentType, String paymentDate, Double invoiceAmount, String checNo, String transactionNo) {
this.invoiceNum = invoiceNum;
this.invoicePaymentId = invoicePaymentId;
this.paymentTypeId = paymentTypeId;
this.paymentType = paymentType;
this.paymentDate = paymentDate;
this.invoiceAmount = invoiceAmount;
this.checkTransactionNo = checkTransactionNo;
this.checkNo = checkNo;
this.transactionNo = transactionNo;
}
public InvoicePaymentRequest() {
@ -72,11 +74,19 @@ public class InvoicePaymentRequest {
this.invoiceAmount = invoiceAmount;
}
public String getCheckTransactionNo() {
return checkTransactionNo;
public String getCheckNo() {
return checkNo;
}
public void setCheckTransactionNo(String checkTransactionNo) {
this.checkTransactionNo = checkTransactionNo;
public void setCheckNo(String checkNo) {
this.checkNo = checkNo;
}
public String getTransactionNo() {
return transactionNo;
}
public void setTransactionNo(String transactionNo) {
this.transactionNo = transactionNo;
}
}

View File

@ -36,7 +36,7 @@ public class InvoicePaymentResource {
String dateStr = request.getPaymentDate();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date = new java.sql.Date(df.parse(dateStr).getTime());
service.updateInvoicePayment(invoiceNum,invoicePaymentId, request.getPaymentTypeId(), request.getInvoiceAmount(), date, request.getCheckTransactionNo());
service.updateInvoicePayment(invoiceNum,invoicePaymentId, request.getPaymentTypeId(), request.getInvoiceAmount(), date, request.getCheckNo(), request.getTransactionNo());
return new ApiResponse(ApiResponse.UPDATE_ACCESS_SUCESS).toResponse();
}
@ -46,7 +46,7 @@ public class InvoicePaymentResource {
String dateStr = request.getPaymentDate();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date = new java.sql.Date(df.parse(dateStr).getTime());
service.createInvoicePayment(request.getInvoiceNum(), request.getPaymentTypeId(), request.getInvoiceAmount(),date,request.getCheckTransactionNo());
service.createInvoicePayment(request.getInvoiceNum(), request.getPaymentTypeId(), request.getInvoiceAmount(),date, request.getCheckNo(), request.getTransactionNo());
return new ApiResponse(ApiResponse.UPDATE_ACCESS_SUCESS).toResponse();
}

View File

@ -19,15 +19,15 @@ public class InvoicePaymentService extends Service{
return getDao().getInvoicePayments(invoiceNum);
}
public void updateInvoicePayment(String invoiceNum, int invoicePaymentId, int InvoicePaymentTypeId, Double paymentAmount, Date paymentDate, String checkTransactionNo)
public void updateInvoicePayment(String invoiceNum, int invoicePaymentId, int InvoicePaymentTypeId, Double paymentAmount, Date paymentDate, String checkNo, String transactionNo)
throws AstuteException {
getDao().updateInvoicePayment(invoiceNum, invoicePaymentId, InvoicePaymentTypeId, paymentAmount, paymentDate, checkTransactionNo);
getDao().updateInvoicePayment(invoiceNum, invoicePaymentId, InvoicePaymentTypeId, paymentAmount, paymentDate, checkNo, transactionNo);
}
public void createInvoicePayment(String invoiceNum, int invoicePaymentTypeId, Double paymentAmount, Date paymentDate, String checkTransactionNo)
public void createInvoicePayment(String invoiceNum, int invoicePaymentTypeId, Double paymentAmount, Date paymentDate, String checkNo, String transactionNo)
throws AstuteException {
getDao().createInvoicePayment(invoiceNum, invoicePaymentTypeId, paymentAmount, paymentDate, checkTransactionNo);
getDao().createInvoicePayment(invoiceNum, invoicePaymentTypeId, paymentAmount, paymentDate, checkNo, transactionNo);
}
public List<PaymentType> getPaymentTypes() throws AstuteException {