Browse Source

新梯價審售價、利潤修正

main
10994015 1 year ago
parent
commit
776c9faa11
  1. 195
      wms/frame/pending.php
  2. 56
      wms/mkt/assets/js/alpine.js
  3. 20
      wms/mkt/pricereview-check.php
  4. 10
      wms/mkt/pricereview-create.php
  5. 8
      wms/mkt/pricereview_mi-api.php

195
wms/frame/pending.php

@ -3,134 +3,107 @@ $token = $_REQUEST["token"];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, viewport-fit=cover" />
<title>待我簽核</title>
<link rel="stylesheet" href="css/plugins/fontawesome-free/css/all.min.css">
<link rel="stylesheet" href="css/dist/css/adminlte.min.css">
<script src="../css/jquery.min.js"></script>
<script src="../css/bootstrap.min.js"></script>
<style>
.content-wrapper {
background-color: #fff;
}
.col-lg-6 {
padding: 8px 0 0 0 !important;
}
.card {
height: 90vh;
line-height: 14 px;
font-size: 14px;
}
.card-header {
background-color: #f4f6f9;
padding-left: 16px;
}
.card-body ol {
font-size: 14px;
margin-left: -30px;
}
.nav-pills .nav-link {
color: #446887;
}
h5 svg {
vertical-align: baseline;
}
h5 a {
color: #000;
}
@media screen and (max-width: 992px) {
.card {
height: 95vh;
}
}
</style>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, viewport-fit=cover" />
<title>待我簽核</title>
<link rel="stylesheet" href="css/plugins/fontawesome-free/css/all.min.css">
<link rel="stylesheet" href="css/dist/css/adminlte.min.css">
<script src="../css/jquery.min.js"></script>
<script src="../css/bootstrap.min.js"></script>
<style>
.content-wrapper {
background-color: #fff;
}
.col-lg-6 {
padding:8px 0 0 0!important;
}
.card {
height: 90vh;
line-height: 14 px;
font-size: 14px;
}
.card-header {
background-color: #f4f6f9;
padding-left: 16px;
}
.card-body ol {
font-size: 14px;
margin-left: -30px;
}
.nav-pills .nav-link {
color: #446887;
}
h5 svg {
vertical-align: baseline;
}
h5 a {
color: #000;
}
@media screen and (max-width: 992px){
.card {
height: 95vh;
}
}
</style>
</head>
<body>
<div class="wrapper">
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
<!-- Main content -->
<div class="content">
<div class="container">
<div class="row">
<!-- /.col-md-6 -->
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<h5 class="card-title m-0"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pencil-square" viewBox="0 0 16 16">
<path d="M15.502 1.94a.5.5 0 0 1 0 .706L14.459 3.69l-2-2L13.502.646a.5.5 0 0 1 .707 0l1.293 1.293zm-1.75 2.456-2-2L4.939 9.21a.5.5 0 0 0-.121.196l-.805 2.414a.25.25 0 0 0 .316.316l2.414-.805a.5.5 0 0 0 .196-.12l6.813-6.814z" />
<path fill-rule="evenodd" d="M1 13.5A1.5 1.5 0 0 0 2.5 15h11a1.5 1.5 0 0 0 1.5-1.5v-6a.5.5 0 0 0-1 0v6a.5.5 0 0 1-.5.5h-11a.5.5 0 0 1-.5-.5v-11a.5.5 0 0 1 .5-.5H9a.5.5 0 0 0 0-1H2.5A1.5 1.5 0 0 0 1 2.5v11z" />
</svg>
<a href="/wms/sign/list.php?function_name=show&token=<?php echo $token; ?>" target="_parent">待我簽核</a>
</h5>
</div>
<div class="card-body p-0">
Loading...
</div>
</div>
<div class="container">
<div class="row">
<!-- /.col-md-6 -->
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<h5 class="card-title m-0"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pencil-square" viewBox="0 0 16 16"><path d="M15.502 1.94a.5.5 0 0 1 0 .706L14.459 3.69l-2-2L13.502.646a.5.5 0 0 1 .707 0l1.293 1.293zm-1.75 2.456-2-2L4.939 9.21a.5.5 0 0 0-.121.196l-.805 2.414a.25.25 0 0 0 .316.316l2.414-.805a.5.5 0 0 0 .196-.12l6.813-6.814z"/><path fill-rule="evenodd" d="M1 13.5A1.5 1.5 0 0 0 2.5 15h11a1.5 1.5 0 0 0 1.5-1.5v-6a.5.5 0 0 0-1 0v6a.5.5 0 0 1-.5.5h-11a.5.5 0 0 1-.5-.5v-11a.5.5 0 0 1 .5-.5H9a.5.5 0 0 0 0-1H2.5A1.5 1.5 0 0 0 1 2.5v11z"/></svg>
<a href="/wms/sign/list.php?function_name=show&token=<?php echo $token; ?>" target="_parent">待我簽核</a></h5>
</div>
<div class="card-body p-0">
Loading...
</div>
<!-- /.col-md-6 -->
</div>
<!-- /.row -->
</div><!-- /.container-fluid -->
</div>
<!-- /.col-md-6 -->
</div>
<!-- /.row -->
</div><!-- /.container-fluid -->
</div>
<!-- /.content -->
</div>
<!-- /.content-wrapper -->
</div>
<script>
$(document).ready(function() {
here();
});
<script>
$(document).ready(function() {
here();
});
function here() {
var URL = 'api_getdata.php';
$.ajax({
type: "GET",
data: {
p: 'pending',
token: '<?php echo $token; ?>'
},
url: URL,
success: function(msg) {
var obj = JSON.parse(msg);
console.log(msg);
var myhtml = '';
if (obj.st == 'ok') {
myhtml += '<ul class="nav nav-pills flex-column">';
for (i = 1; i <= Object.keys(obj.content).length; i++) {
if (obj.content[i].fname == '新梯價審流程') {
myhtml += '<li class="nav-item"><a href="/wms/mkt/pricereview-index.php?system_id=' + obj.content[i].sid + '&flow_id=' + obj.content[i].fid + '&function_name=show&token=<?php echo $token; ?>" class="nav-link" target="_parent">' + obj.content[i].sname + ' > ' + obj.content[i].fname + '(' + obj.content[i].cnt + ')</a></li>';
} else if (obj.content[i].fname == '汰改價審流程') {
myhtml += '<li class="nav-item"><a href="/wms/mkt/pricereview_renovate-index.php?system_id=' + obj.content[i].sid + '&flow_id=' + obj.content[i].fid + '&function_name=show&token=<?php echo $token; ?>" class="nav-link" target="_parent">' + obj.content[i].sname + ' > ' + obj.content[i].fname + '(' + obj.content[i].cnt + ')</a></li>';
} else if (obj.content[i].fname == '契约價審流程') {
myhtml += '<li class="nav-item"><a href="/wms/cont/sign_list.php?system_id=' + obj.content[i].sid + '&flow_id=' + obj.content[i].fid + '&function_name=show&token=<?php echo $token; ?>" class="nav-link" target="_parent">' + obj.content[i].sname + ' > ' + obj.content[i].fname + '(' + obj.content[i].cnt + ')</a></li>';
} else {
myhtml += '<li class="nav-item"><a href="/wms/sign/list.php?system_id=' + obj.content[i].sid + '&flow_id=' + obj.content[i].fid + '&function_name=show&token=<?php echo $token; ?>" class="nav-link" target="_parent">' + obj.content[i].sname + ' > ' + obj.content[i].fname + '(' + obj.content[i].cnt + ')</a></li>';
}
}
if (Object.keys(obj.content).length == 6) {
myhtml += '<li class="nav-item"><a href="/wms/sign/list.php?function_name=show&token=<?php echo $token; ?>" class="nav-link" target="_parent">.... 顯示更多</a></li>';
}
myhtml += '</ul>';
$('.card-body').empty().append(myhtml);
}
function here() {
var URL = 'api_getdata.php';
$.ajax({
type: "GET",
data: {p: 'pending', token: '<?php echo $token; ?>'},
url: URL,
success: function (msg) {
var obj = JSON.parse(msg);
var myhtml = '';
if (obj.st == 'ok') {
myhtml += '<ul class="nav nav-pills flex-column">';
for (i=1; i<=Object.keys(obj.content).length; i++) {
myhtml += '<li class="nav-item"><a href="/wms/sign/list.php?system_id='+obj.content[i].sid+'&flow_id='+obj.content[i].fid+'&function_name=show&token=<?php echo $token; ?>" class="nav-link" target="_parent">'+obj.content[i].sname+' > '+obj.content[i].fname+'('+obj.content[i].cnt+')</a></li>';
}
})
if (Object.keys(obj.content).length == 6) {
myhtml += '<li class="nav-item"><a href="/wms/sign/list.php?function_name=show&token=<?php echo $token; ?>" class="nav-link" target="_parent">.... 顯示更多</a></li>';
}
myhtml += '</ul>';
$('.card-body').empty().append(myhtml);
}
}
</script>
})
}
</script>
</body>
</html>

56
wms/mkt/assets/js/alpine.js

@ -199,8 +199,6 @@ const pricereviewOptionSelect = () => {
init() {
this.optionCategory = 0
this.initButtons();
this.renderTbody();
console.log(this.options)
},
options: options,
orioptions: options,
@ -254,7 +252,7 @@ const pricereviewOptionSelect = () => {
},
optionSubCategory: 1,
changeCategory(category, subcategory = 0) {
console.log(this.$refs.selectModalBody);
// console.log(this.$refs.selectModalBody);
this.initButtons(category)
this.kind = (category == 'sub') ? this.kind : category;
if (subcategory != 0) {
@ -269,54 +267,48 @@ const pricereviewOptionSelect = () => {
this.searchtext = ""
this.reloadOptions();
},
reloadOptions() {
if (this.kind == 0) {
this.options = this.orioptions
this.renderTbody();
return;
}
if (this.subkind == 0) {
this.options = this.orioptions.filter(option => option.kind == this.kind)
this.renderTbody();
this.options.forEach(option =>{
if (option.kind == this.kind) {
option.status = "Y"
}else{
option.status = "H"
}
})
return;
}
this.options = this.orioptions.filter(option => option.kind == this.kind && option.subkind == this.subkind)
this.renderTbody();
this.options.forEach(option => {
if(option.kind == this.kind && option.subkind == this.subkind){
option.status = "Y"
}else{
option.status = "H"
}
})
},
searchOptions(e) {
e = null;
this.options = this.orioptions
this.reloadOptions();
let val = (e== null) ? this.searchtext : e.target.value.toLowerCase()
this.options = (this.options).filter(option=>{
let val = (e== null) ? this.searchtext.toLowerCase() : e.target.value.toLowerCase()
this.options.forEach(option=>{
if(option.group_name == null) option.group_name = ''
if(option.spec == null) option.spec = ''
if(option.memo == null) option.memo = ''
if(option.price == null) option.price = 0
if(option.unit == null) option.unit = ''
return option.group_name.includes(val) || option.memo.toLowerCase().includes(val) || option.spec.toLowerCase().includes(val) || option.unit.includes(val) || String(option.price).includes(val)
if(option.group_name.includes(val) || option.memo.toLowerCase().includes(val) || option.spec.toLowerCase().includes(val) || option.unit.includes(val) || String(option.price).includes(val)){
option.status = "Y"
}else{
option.status = "N"
}
})
},
renderTbody() {
return
console.log(this.options);
this.$refs.selectModalBody;
let html = "";
for (let i = 0; i < this.options.length; i++) {
html += "<tr style='cursor:pointer'>"
html += "<td>" + this.options[i].id + "</td>"
html += "<td>" + this.options[i].group_name + "</td>"
html += "<td>" + this.options[i].spec + "</td>"
html += "<td>" + this.options[i].memo + "</td>"
html += "<td>" + this.options[i].optional + "</td>"
html += "<td>" + this.options[i].unit + "</td>"
html += "<td>" + this.options[i].price + "</td>"
html += "</tr>";
}
this.$refs.selectModalBody.innerHTML = html;
}
}
}

20
wms/mkt/pricereview-check.php

@ -325,12 +325,9 @@ foreach ($res as $data) {
xhr.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
data = JSON.parse(this.responseText);
console.log('123');
console.log(data);
//console.log(data);return false;
if (data.st == 'err') {
console.log('123');
//alert(data.err);
return false;
}
@ -346,8 +343,6 @@ foreach ($res as $data) {
let a = data.content[k][0] + data.content[k][19][1];
$("#tb1").find("input[name=mi_fix]").eq(k).val(commafy(a));
}
console.log('123');
let a = data.content[k][0] + data.content[k][19][1];
$("#tb1").find("input[name=mi_fix]").eq(k).val(commafy(a));
var mihtml = "";
@ -368,7 +363,7 @@ foreach ($res as $data) {
console.log(data.content[k][12]);
Object.keys(data.content[k][14]).forEach(function(m) {
if (data.content[k][14][m][0] != '') {
mihtml += "<li>" + data.content[k][14][m][0] + ":" + commafy(data.content[k][14][m][1]) + "</li>";
mihtml += "<li>" + data.content[k][14][m][0].replace("&lt;br&gt;", "").replace("&amp;", "").replace("amp;", "").replace("()", "").replace(/\s+/g, '') + ":" + commafy(data.content[k][14][m][1]) + "</li>";
}
});
Object.keys(data.content[k][16]).forEach(function(m) {
@ -382,9 +377,16 @@ foreach ($res as $data) {
mihtml += "<li>" + data.content[k][19][0] + ":" + commafy(data.content[k][19][1]) + "</li>";
mihtml += "以上合計:" + commafy(data.content[k][13]) +
"<br>";
total_mi += data.content[k][13];
if(total_mi == ""){
console.log("undefided!!!");
}
$("#tb1").find("tr[name=facil_templ2]").eq(k).find('td').eq(1).html(mihtml);
//$("#tb1").find("input[name=mi_fix]").eq(k).closest('td').append(mihtml);
document.getElementsByClassName('total_mi_fix')[k].value = commafy(total_mi)
// document.getElementsByClassName('item_price_ct')[k].value =commafy(total_mi)
document.getElementsByClassName('gross_profit')[k].value = commafy(Number(document.getElementsByClassName('item_price_ct')[k].value.replace(/[,]+/g, "")) - total_mi)
document.getElementsByClassName('gross_profit_rate')[k].value = Math.round((Number(document.getElementsByClassName('gross_profit')[k].value.replace(/[,]+/g, "")) / Number(document.getElementsByClassName('item_price_ct')[k].value.replace(/[,]+/g, "")) * 100) * 10) / 10
@ -587,8 +589,8 @@ foreach ($res as $data) {
<td><input type="text" name="item_unit_price" class="form-control dollar-right" size="8" value="<?= number_format($val["item_unit_price"]); ?>"></td>
<td><input type="text" name="item_qty" class="form-control" size="2" value="1"></td>
<td><input type="text" name="item_price_bp" class="form-control dollar-right" size="9" value="<?= number_format($val["item_unit_price"]); ?>"></td>
<td><input type="text" name="mi_fix" class="form-control dollar-right" size="9" value="<?php echo ($val["mi_fix"]) ? number_format($val["mi_fix"]) : ""; ?>" disabled></td>
<td><input type="text" name="item_price_ct" class="form-control dollar-right" size="9" value="<?= number_format($val["item_price_ct"] / $val["item_qty"]); ?>"></td>
<td><input type="text" name="mi_fix" class="form-control dollar-right total_mi_fix" size="9" value="<?php echo ($val["mi_fix"]) ? number_format($val["mi_fix"]) : ""; ?>" disabled></td>
<td><input type="text" name="item_price_ct" class="form-control dollar-right item_price_ct" size="9" value="<?= number_format($val["item_price_ct"] / $val["item_qty"]); ?>"></td>
<!--<td><input type="text" name="item_price" class="form-control dollar-right" size="8" value="<?php echo ($val["item_price"]) ? number_format($val["item_price"]) : ""; ?>"></td>
<td><input type="text" name="pv_rate" class="form-control" size="1" value="<?= $val["pv_rate"]; ?>"></td>
<td><input type="text" name="allocate" class="form-control" size="6" value="<?= $val["allocate"]; ?>"></td>-->

10
wms/mkt/pricereview-create.php

@ -146,7 +146,7 @@ if ($last_pr_arr) {
// Option Data
$opt_data_arr = [];
$opt_kind_arr = ["A" => "小電梯型錄選配加價報價", "B" => "客梯型錄選配加價報價", "C" => "550-1600kg選配業務報價", "D" => "其它"];
$sql = "select * from option_price where status = 'Y' order by kind, id";
$sql = "select * from option_price where status = 'Y' order by id";
$res = mysqli_query($link, $sql);
while ($row = mysqli_fetch_assoc($res)) {
$opt_data_arr[$row["kind"]][$row["group_name"]][$row["id"]]["spec"] = $row["spec"];
@ -753,10 +753,12 @@ $option_str .= "</tbody></table>";
$("#optionModal").modal('show');
var jobj = $(this); // 父視窗
$("#optionModal .modal-body td").off().click(function(){
$("#optionModal .modal-body td").unbind().click(function(){
var pobj = $(this).closest('td').parent();
selectOptionFn(pobj, jobj)
});
$('#tb2').unbind('focus', 'tr[name=option_templ] a[name=option_href]');
});
$("#optionFaciModal").on("hidden.bs.modal", function() {
$("#optionFaciModal .modal-body").html('');
@ -868,7 +870,7 @@ $option_str .= "</tbody></table>";
});
$("input[name=pay_scale]").keyup(function() {
$(this).closest('td').next('td').find('input[name=pay_amount]').val(commafy(($("#price_total").val().replace(/[,]+/g, "") / 100 * $(this).val()).toFixed(0)));
$(this).closest('td').next('td').find('input[nam e=pay_amount]').val(commafy(($("#price_total").val().replace(/[,]+/g, "") / 100 * $(this).val()).toFixed(0)));
var payAllScale = 0;
var payAllAmt = 0;
$("input[name=pay_scale]").each(function() {
@ -1275,7 +1277,7 @@ $options = $stmt->fetchAll(PDO::FETCH_ASSOC);
</thead>
<tbody id="selectModalBody" x-ref="selectModalBody">
<template x-for="option in options" :key="option.id">
<tr style="cursor:pointer">
<tr style="cursor:pointer" x-show="option.status == 'Y'">
<td x-text='option.id' name="optionID"></td>
<td x-text="option.group_name"> </td>
<td x-text="option.spec"></td>

8
wms/mkt/pricereview_mi-api.php

@ -229,6 +229,7 @@ try {
$stmt->bindParam(':quotation_no', $quotation_no);
$stmt->execute();
$row_e = $stmt->fetch(PDO::FETCH_ASSOC);
// $sql2 = "select o.*, r.* from elevator_mi_option o, elevator_quotation_rule r ";
// $sql2 .= "where o.quotation_no = r.quotation_no and o.elevator_type = '" . $v['etype'] . "' ";
// $sql2 .= "and ($v[item_weight] between o.min_weight and o.max_weight) ";
@ -240,9 +241,12 @@ try {
// // echo $sql2;
// $res_e = mysqli_query($link, $sql2);
//$row_e = mysqli_fetch_assoc($res_e)
if ($row_e || true) {
if ($row_e) {
// 加價:先不納入
$row_e["option_price"] = 0;
if(!isset($row_e["purchase_cost"])){
}
// 基准采购成本+±1停材料费+设计费+出口费用
$part1 = $row_e["purchase_cost"] + ($v["floors"] - $row_e["base_floor"]) * $row_e["material_plus"] + $row_e["design"] * $row_e["design_hour"] + $row_e["export_fee"];
// 利潤
@ -424,6 +428,8 @@ try {
$mi_arr[$i][19] = $specarr;
$i++;
}
}else{
$rarr['err'] = "notfoundmi";
}
// mysqli_free_result($res_e);
}

Loading…
Cancel
Save