1
0
Fork 0
master
嘉祥 詹 2024-09-11 19:00:11 +08:00
parent f5202459fa
commit b0fd635c98
4 changed files with 288 additions and 6 deletions

View File

@ -28,6 +28,134 @@ namespace QuotationMaker.Controllers
}
[Route("addEditDelQuotation")]
public ActionResult AddEditDelQuotation(IFormCollection obj) {
quotationDetailResult ret = new quotationDetailResult();
authToken token = new authToken(this._httpContextAccessor);
if (token.user_isLogin == false)
{
HttpContext.Response.Cookies.Delete("token_key");
ret.ret = "no";
ret.err_code = "99999";
ret.message = "非登入狀態!";
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
}
string method = obj["method"].ToString();
string dept_uid = obj["dept_uid"].ToString();
string project_uid = obj["project_uid"].ToString();
string quotation_uid = obj["quotation_uid"].ToString();
string quotation_version = obj["quotation_version"].ToString();
string quotation_prodMethod = obj["quotation_prodMethod"].ToString();
string quotation_date = obj["quotation_date"].ToString();
string quotation_expStart = obj["quotation_expStart"].ToString();
string quotation_expEnd = obj["quotation_expEnd"].ToString();
string quotation_name = obj["quotation_name"].ToString();
string contactPerson_uid = obj["contactPerson_uid"].ToString();
string company_uid = obj["company_uid"].ToString();
string quotation_log = obj["quotation_log"].ToString();
string quotation_noTaxTotal = obj["quotation_noTaxTotal"].ToString();
string quotation_specTotal = obj["quotation_specTotal"].ToString();
string quotation_tax = obj["quotation_tax"].ToString();
string quotation_grandTotal = obj["quotation_grandTotal"].ToString();
string quotation_sa = obj["quotation_sa"].ToString();
string mainItems_jsonstr = obj["mainItems"].ToString();
string payments_jsonstr = obj["payments"].ToString();
string invoices_jsonstr = obj["invoices"].ToString();
if (method == "add") {
quotation objQuotation = new quotation();
quotation_log = "報價單資料成立";
quotation_uid = "q_" + GlobalClass.CreateRandomCode(24);
quotation_version = "1";
objQuotation.quotation_uid = quotation_uid;
objQuotation.quotation_version = int.Parse(quotation_version);
objQuotation.dept_uid = dept_uid;
objQuotation.quotation_prodMethod = quotation_prodMethod;
objQuotation.quotation_date = quotation_date;
objQuotation.quotation_expStart = quotation_expStart;
objQuotation.quotation_expEnd= quotation_expEnd;
objQuotation.quotation_name = quotation_name;
objQuotation.project_uid = project_uid;
objQuotation.contactPerson_uid = contactPerson_uid;
objQuotation.company_uid = company_uid;
objQuotation.quotation_log = quotation_log;
objQuotation.quotation_create_uid = token.user_uid;
objQuotation.quotation_modify_uid = token.user_uid;
objQuotation.quotation_noTaxTotal = double.Parse(quotation_noTaxTotal);
objQuotation.quotation_specTotal = double.Parse(quotation_specTotal);
objQuotation.quotation_tax = double.Parse(quotation_tax);
objQuotation.quotation_grandTotal = double.Parse(quotation_grandTotal);
objQuotation.quotation_sa = quotation_sa;
objQuotation.quotation_createdate = DateTime.Now;
objQuotation.quotation_modifydate = DateTime.Now;
dynamic mainItems_Json;
dynamic payments_Json;
dynamic invoices_Json;
try
{
mainItems_Json = JsonConvert.DeserializeObject(mainItems_jsonstr);
payments_Json = JsonConvert.DeserializeObject(payments_jsonstr);
invoices_Json = JsonConvert.DeserializeObject(invoices_jsonstr);
}
catch (Exception ex)
{
ret.ret = "no";
ret.err_code = "0003";
ret.message = "mainItems or payments or invoices json error," + ex.Message;
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
}
List<quotationMainItem> quotationMainItems = new List<quotationMainItem>();
List<quotationSubItem> quotationSubItems = new List<quotationSubItem>();
foreach (dynamic item in mainItems_Json) {
string quotationMainItem_uid = "qm_" + GlobalClass.CreateRandomCode(24);
quotationMainItem newItem = new quotationMainItem();
newItem.quotation_uid = quotation_uid;
newItem.mainItem_uid = item.mainItem_uid;
newItem.quotationMainItem_uid = quotationMainItem_uid;
newItem.quotationMainItem_name = item.quotationMainItem_name;
newItem.quotationMainItem_ac = double.Parse(item.quotationMainItem_ac);
newItem.quotationMainItem_subTotal = double.Parse(item.quotationMainItem_subTotal);
newItem.quotationMainItem_revoke = "N";
newItem.quotationMainItem_version = int.Parse(quotation_version);
quotationMainItems.Add(newItem);
foreach (dynamic subItem in item.subitems) {
quotationSubItem newSubItem = new quotationSubItem();
newSubItem.quotationSubItem_uid = "qs" +GlobalClass.CreateRandomCode(24);
newSubItem.quotationMainItem_uid = quotationMainItem_uid;
newSubItem.quotation_uid = quotation_uid;
newSubItem.subItem_uid = subItem.subItem_uid;
newSubItem.quotationSubItem_name = subItem.subItem_name;
newSubItem.quotationSubItem_descript = subItem.subItem_descript;
newSubItem.quotationSubItem_price = double.Parse(subItem.subItem_price);
newSubItem.quotationSubItem_unitType = subItem.quotationSubItem_unitType;
newSubItem.quotationSubItem_number = double.Parse(subItem.quotationSubItem_number);
newSubItem.quotationSubItem_subTotal = double.Parse(subItem.quotationSubItem_subTotal);
newSubItem.quotationSubItem_hasAC = subItem.quotationSubItem_hasAC;
newSubItem.quotationSubItem_revoke = "N";
newSubItem.quotationSubItem_version = int.Parse(quotation_version);
quotationSubItems.Add(newSubItem);
}
}
}
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
}
[Route("getModelQuotation")]
public ActionResult AddEditDelGetModelQuotation(IFormCollection obj)
{

View File

@ -4,6 +4,15 @@ using Dapper;
using static DbTableClass;
public class resultClass
{
public class quotationDetailResult
{
public string ret = "no";
public string err_code = "0000";
public string message = "";
public quotationDetail quotationDetail = new quotationDetail();
public quotationView quotationView = new quotationView();
}
public class quotationViewListResult
{
public string ret = "no";
@ -148,6 +157,60 @@ public class resultClass
}
}
public class quotationDetail : quotation {
SqlConnection conn = new SqlConnection(GlobalClass.appsettings("ConnectionStrings:SQLConnectionString"));
public List<quotationMainItemDetail> quotationMainItemDetails = new List<quotationMainItemDetail>();
public List<payment> payments = new List<payment>();
public List<invoice> invoices = new List<invoice>();
public quotationDetail() { }
public quotationDetail(quotation objData) {
Type projectType = objData.GetType();
foreach (var prop in projectType.GetProperties())
{
string propName = prop.Name;
var valueProperty = projectType.GetProperty(propName);
object propValue = valueProperty.GetValue(objData, null);
this.GetType().GetProperty(propName).SetValue(this, propValue);
}
List<quotationMainItem> quotationMainItems = conn.Query<quotationMainItem>("select * from quotationMainItem where quotationSubItem_version = @quotationSubItem_version and quotation_uid = @quotation_uid ", new { quotationSubItem_version = this.quotation_version, quotation_uid = this.quotation_uid }).ToList();
foreach (quotationMainItem qItem in quotationMainItems) {
quotationMainItemDetails.Add(new quotationMainItemDetail(qItem));
}
payments = conn.Query<payment>("select * from payment where payment_version = @payment_version and quotation_uid = @quotation_uid ", new { payment_version = this.quotation_version, quotation_uid = this.quotation_uid }).ToList();
invoices = conn.Query<invoice>("select * from invoice where invoice_version = @invoice_version and quotation_uid = @quotation_uid ", new { invoice_version = this.quotation_version, quotation_uid = this.quotation_uid }).ToList();
}
}
public class quotationMainItemDetail : quotationMainItem {
SqlConnection conn = new SqlConnection(GlobalClass.appsettings("ConnectionStrings:SQLConnectionString"));
public List<quotationSubItem> quotationSubItems = new List<quotationSubItem>();
public quotationMainItemDetail() { }
public quotationMainItemDetail(quotationMainItem objData) {
Type projectType = objData.GetType();
foreach (var prop in projectType.GetProperties())
{
string propName = prop.Name;
var valueProperty = projectType.GetProperty(propName);
object propValue = valueProperty.GetValue(objData, null);
this.GetType().GetProperty(propName).SetValue(this, propValue);
}
quotationSubItems = conn.Query<quotationSubItem>("select * from quotationSubItem where quotationSubItem_version = @quotationSubItem_version and quotationMainItem_uid = @quotationMainItem_uid ", new { quotationSubItem_version = this.quotationMainItem_version, quotationMainItem_uid = this.quotationMainItem_uid }).ToList();
}
}
public class modelQuotationDetail : modelQuotation {
SqlConnection conn = new SqlConnection(GlobalClass.appsettings("ConnectionStrings:SQLConnectionString"));

View File

@ -400,7 +400,7 @@
<div class="form-group">
<div class="form-label-group">
<input type="text" id="quotation_grandTotal" class="form-control" value="" placeholder="總計 Grand Total" maxlength="15" required="" /> <label for="quotation_grandTotal">總計 Grand Total</label>
<input type="hidden" id="總計 Grand Total_old" />
<input type="hidden" id="quotation_grandTotal_old" />
</div>
</div><!-- /.form-group -->
<div class="form-group">

View File

@ -697,7 +697,36 @@ $(document).ready(function () {
var contactPerson_uid = $('#contactPerson_uid').val();
var contactPerson_uid_old = $('#contactPerson_uid_old').val();
var company_uid = $('#quotation_company_uid').val();
var quotation_noTaxTotal = $('#quotation_noTaxTotal').val();
var quotation_noTaxTotal_old = $('#quotation_noTaxTotal_old').val();
var quotation_specTotal = $('#quotation_specTotal').val();
var quotation_specTotal_old = $('#quotation_specTotal_old').val();
var quotation_tax = $('#quotation_tax').val();
var quotation_tax_old = $('#quotation_tax_old').val();
var quotation_grandTotal = $('quotation_grandTotal').val();
var quotation_grandTotal_old = $('#quotation_grandTotal_old').val();
var quotation_sa = $('quotation_sa').val();
var quotation_sa_old = $('#quotation_sa_old').val();
var err_msg = '';
if (quotation_date == '') {
err_msg += '請輸入報價日期!\n';
}
if (quotation_name == '') {
err_msg += '請輸入報價單名稱!\n';
}
if (quotation_expStart == '' || quotation_expEnd == '') {
err_msg += '請輸入報價有效起訖日期!\n';
}
if (err_msg != '') {
alert(err_msg);
return;
}
var quotation_log = '';
if ($('#quotation_custom').prop('checked') == true) {
@ -725,6 +754,26 @@ $(document).ready(function () {
quotation_log += '客戶窗口人選變更\n';
}
if (quotation_noTaxTotal != quotation_noTaxTotal_old) {
quotation_log += '專案總價由 ' + AppendComma(quotation_noTaxTotal_old) + ' 變更為 ' + AppendComma(quotation_noTaxTotal) + '\n';
}
if (quotation_specTotal != quotation_specTotal_old) {
quotation_log += '專案優惠總價由 ' + AppendComma(quotation_specTotal_old) + ' 變更為 ' + AppendComma(quotation_specTotal) + '\n';
}
if (quotation_tax != quotation_tax_old) {
quotation_log += '加值營業稅由 ' + AppendComma(quotation_tax_old) + ' 變更為 ' + AppendComma(quotation_tax) + '\n';
}
if (quotation_grandTotal != quotation_grandTotal_old) {
quotation_log += '實際總價由 ' + AppendComma(quotation_grandTotal_old) + ' 變更為 ' + AppendComma(quotation_grandTotal) + '\n';
}
if (quotation_sa != cquotation_sa_old) {
quotation_log += '製作及維護服務協議條款內容有所變更\n';
}
$.each(deledMainItems, function (index, value) {
quotation_log += value.mainItem_msg + '\n';
});
@ -890,6 +939,8 @@ $(document).ready(function () {
var formData = {
method: quotation_method,
project_uid: $('#quotation_project_uid').val(),
dept_uid: $('#dept_select').val(),
quotation_uid: quotation_uid,
quotation_version: quotation_version,
quotation_prodMethod: quotation_prodMethod,
@ -900,12 +951,52 @@ $(document).ready(function () {
contactPerson_uid: contactPerson_uid,
company_uid: company_uid,
quotation_log: quotation_log,
mainItems: mainItems,
payments: payments,
invoices: invoices
quotation_noTaxTotal: quotation_noTaxTotal,
quotation_specTotal: quotation_specTotal,
quotation_tax: quotation_tax,
quotation_grandTotal: quotation_grandTotal,
quotation_sa: quotation_sa,
mainItems: JSON.stringify(mainItems),
payments: JSON.stringify(payments),
invoices: JSON.stringify(invoices)
}
var testflag = 1;
if (quotation_log == '' && quotation_method == 'edit') {
alert('資料沒有異動,取消儲存!');
return;
}
$.ajax({
url: "/Api/addEditDelQuotation",
type: "post",
data: formData,
success: function (data, textStatus, jqXHR) {
if (data.ret == "yes") {
//var obj = data.projectViews[0];
if (method == "add") {
//projectTable.fnAddData(obj);
}
if (method == "edit") {
//projectTable.fnUpdate(obj, projectRowPos);
}
//$('#clientProjectModal').modal('toggle');
} else {
alert(data.message);
if (data.err_code == "99999") {
location.href = "/Root/Login";
}
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert('網路或伺服器發生錯誤,請稍後重試!');
}
});
});
});