Commit 1ccc6fa5 authored by Deni Rinaldi's avatar Deni Rinaldi

new Formula

parent f908095a
...@@ -114,7 +114,7 @@ export default class TaxPlanning extends Component { ...@@ -114,7 +114,7 @@ export default class TaxPlanning extends Component {
"submission_id": this.props.submissionID "submission_id": this.props.submissionID
} }
api.create().getDetailReportMB(payload).then(response => { api.create().getDetailReportMB(payload).then(response => {
// console.log(response); console.log(response);
let dataTable = [] let dataTable = []
if (response.data) { if (response.data) {
if (response.data.status == 'success') { if (response.data.status == 'success') {
...@@ -770,6 +770,166 @@ export default class TaxPlanning extends Component { ...@@ -770,6 +770,166 @@ export default class TaxPlanning extends Component {
let dataFormula = [] let dataFormula = []
let id = 0 let id = 0
let double = false let double = false
const handleNewFormula = (tableMeta, dex, newFormula) => {
let splitFormula = String(newFormula).split('@')
let baru = []
let anjay = []
splitFormula.map((item) => {
let re = /^[a-zA-Z0-9_]+$/;
let items = String(item).substr(Number(String(item).length) - 1, 1)
if (item !== "") {
if (!re.test(items)) {
baru.push(String(item).substr(0, Number(String(item).length) - 1))
baru.push(String(item).substr(Number(String(item).length) - 1, 1))
} else {
baru.push(String(item))
}
}
})
baru.map((item, index) => {
if (item == '-' || item == '+' || item == '/' || item == '*' || item == '(' || item == ')') {
anjay.push(item)
} else {
if (String(item).includes('#')) {
let splitform = String(item).split('#')
if (splitform[1] == 'TP1' || splitform[1] == 'TP2' || splitform[1] == 'TP3') {
let indexID = dataTable2.findIndex((val) => val[24] == splitform[0])
if (indexID !== -1) {
let data = dataTable2[indexID][19].tbf.value
console.log(dataTable2[indexID][19].tbf.value);
// let data = splitform[1] == 'TP1' ? dataTable2[indexID][tableMeta.columnIndex].tbc : splitform[1] == 'TP2' ? dataTable2[indexID][tableMeta.columnIndex].fcp : dataTable2[indexID][tableMeta.columnIndex].tbf
// let valuezz = data.value == undefined ? data : data.value
anjay.push(data == "" ? 0 : data)
}
}
// else {
// if (forecast !== undefined) {
// forecast.map((item, index) => {
// if (periode == item.periode) {
// totalShldBeNil += Number(item.value)
// }
// })
// anjay.push(totalShldBeNil)
// } else if (String(item).includes('[M-1]')) {
// let tst = String(item).replace('[M-1]', '')
// let data = tableMeta.columnIndex == 9 ? 20 : tableMeta.columnIndex - 1
// let dataSub = dex == 1 ? tableMeta.rowData[data].tbc : dex == 2 ? tableMeta.rowData[data].fcp : tableMeta.rowData[data].tbf
// let period = data == 20 ? Number(this.props.periode) - 1 : this.props.periode
// let indexID = dataSub.formula.findIndex((val) => val.item_formula == String(`@${tst}`) && val.periode == period)
// if (indexID !== -1) {
// let valuezz = tableMeta.rowData[data].formula[indexID].value
// anjay.push(valuezz == "" ? 0 : valuezz)
// }
// } else {
// let data = dex == 1 ? value.tbc : dex == 2 ? value.fcp : value.tbf
// // console.log(data);
// let indexID = data.formula.findIndex((val) => val.item_formula == String(`@${item}`) && val.periode == Number(this.props.periode))
// if (indexID !== -1) {
// let valuezz = data.formula[indexID].value
// anjay.push(valuezz == "" ? 0 : valuezz)
// }
// }
// }
} else {
let indexID = dataTable2.findIndex((val) => val[24] == item)
if (indexID !== -1) {
if (dataTable2[indexID][24] == tableMeta.rowData[24]) {
anjay.push(0)
} else {
let data = dataTable2[indexID][tableMeta.columnIndex]
// let data = dex == 1 ? dataTable2[indexID][tableMeta.columnIndex].tbc : dex == 2 ? dataTable2[indexID][tableMeta.columnIndex].fcp : dataTable2[indexID][tableMeta.columnIndex].tbf
// let valuezz = data == undefined ? data : data.value
anjay.push(data == "" ? 0 : data)
}
}
}
}
})
console.log(anjay);
let total = 0
let total2 = 0
let opt = ""
let opt2 = ""
let prio = false
let simpen2 = ""
anjay.map((item, index) => {
if (item == "+") {
if (prio) {
opt2 = "tambah"
} else {
opt = "tambah"
}
} else if (item == "-") {
if (prio) {
opt2 = "kurang"
} else {
opt = "kurang"
}
} else if (item == "*") {
if (prio) {
opt2 = "kali"
} else {
opt = "kali"
}
} else if (item == "/") {
if (prio) {
opt2 = "bagi"
} else {
opt = "bagi"
}
} else if (item == "(") {
prio = true
simpen2 = "active"
} else if (item == ")") {
prio = false
}
else {
if (prio) {
if (opt2 == "tambah") {
total2 = Number(total2) + Number(item)
} else if (opt2 == "kurang") {
total2 = Number(total2) - Number(item)
} else if (opt2 == "kali") {
total2 = Number(total2) * Number(item)
} else if (opt2 == "bagi") {
total2 = Number(total2) / Number(item) == NaN ? 0 : Number(total2) / Number(item)
} else {
total2 += Number(item)
}
} else {
if (opt == "tambah") {
total = Number(total) + Number(item)
} else if (opt == "kurang") {
total = Number(total) - Number(item)
} else if (opt == "kali") {
total = Number(total) * Number(item)
} else if (opt == "bagi") {
total = Number(total) / Number(item) == NaN ? 0 : Number(total) / Number(item)
} else {
total += Number(item)
}
}
}
})
if (simpen2 == "active") {
if (opt == "tambah") {
total = Number(total) + Number(total2)
} else if (opt == "kurang") {
total = Number(total) - Number(total2)
} else if (opt == "kali") {
total = Number(total) * Number(total2)
} else if (opt == "bagi") {
total = Number(total) / Number(total2) == NaN ? 0 : Number(total) / Number(total2)
}
}
total = R.equals(total, NaN) ? "0.0" : total
return total
}
const handleValueFormula = (value, tableMeta, dex, xntd, forecast, periode) => { const handleValueFormula = (value, tableMeta, dex, xntd, forecast, periode) => {
// console.log(xntd) // console.log(xntd)
let form = dex === 1 ? tableMeta.rowData[6].tbc : dex === 2 ? tableMeta.rowData[6].fcp : tableMeta.rowData[6].tbf let form = dex === 1 ? tableMeta.rowData[6].tbc : dex === 2 ? tableMeta.rowData[6].fcp : tableMeta.rowData[6].tbf
...@@ -790,6 +950,8 @@ export default class TaxPlanning extends Component { ...@@ -790,6 +950,8 @@ export default class TaxPlanning extends Component {
} }
}) })
// console.log(baru);
// if (forecast !== undefined) { // if (forecast !== undefined) {
// console.log(splitFormula) // console.log(splitFormula)
// } // }
...@@ -1045,6 +1207,8 @@ export default class TaxPlanning extends Component { ...@@ -1045,6 +1207,8 @@ export default class TaxPlanning extends Component {
} }
else if (indexChilds == 2) { else if (indexChilds == 2) {
dataTable2[tableMeta.rowIndex][tableMeta.columnIndex].tbf = Number(val) dataTable2[tableMeta.rowIndex][tableMeta.columnIndex].tbf = Number(val)
} else if (indexChilds == 3){
dataTable2[tableMeta.rowIndex][tableMeta.columnIndex] = Number(val)
} }
} }
} }
...@@ -5781,12 +5945,19 @@ export default class TaxPlanning extends Component { ...@@ -5781,12 +5945,19 @@ export default class TaxPlanning extends Component {
), ),
setCellProps: () => ({ style2 }), setCellProps: () => ({ style2 }),
customBodyRender: (value, tableMeta, updateValue) => { customBodyRender: (value, tableMeta, updateValue) => {
// console.log(tableMeta.rowData);
return ( return (
<div> <div>
<div className="grid grid-3x content-center"> <div className="grid grid-3x content-center">
{/* <div className="col-1"> */} {/* <div className="col-1"> */}
<div style={{ textAlign: 'right' }}> <div style={{ textAlign: 'right' }}>
{tableMeta.rowData[3] === 3 ? {String(tableMeta.rowData[8]).toUpperCase() === 'TAX LOSS CARRY FORWARD' ||
String(tableMeta.rowData[8]).toUpperCase() === 'ADJUSTMENT' ||
String(tableMeta.rowData[8]).toUpperCase() === 'INC TAX ART 22' ||
String(tableMeta.rowData[8]).toUpperCase() === 'INC TAX ART 23' ||
String(tableMeta.rowData[8]).toUpperCase() === 'INC TAX ART 24' ||
String(tableMeta.rowData[8]).toUpperCase() === 'INC TAX ART 25'
?
<div style={{ flex: 1 }}> <div style={{ flex: 1 }}>
<FormControlLabel <FormControlLabel
style={{ margin: 0 }} style={{ margin: 0 }}
...@@ -5794,82 +5965,194 @@ export default class TaxPlanning extends Component { ...@@ -5794,82 +5965,194 @@ export default class TaxPlanning extends Component {
control={ control={
<NumberFormat <NumberFormat
thousandSeparator={true} thousandSeparator={true}
style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }} style={{ color: "#5198ea", fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }}
type="text" type="text"
placeholder="input" placeholder="input"
disabled={this.props.isApprover == true ? true : ((this.props.lastStatus === 'SUBMIT' || this.props.lastStatus === 'REVISION') && this.props.prevRevision === false && (this.props.status === 'revision' || this.props.status === 'not-yet' || this.props.status === 'draft' || this.props.status === 'submitted') ? false : true)} disabled={this.props.isApprover == true ? true : ((this.props.lastStatus === 'SUBMIT' || this.props.lastStatus === 'REVISION') && this.props.prevRevision === false && (this.props.status === 'revision' || this.props.status === 'not-yet' || this.props.status === 'draft' || this.props.status === 'submitted') ? false : true)}
value={Number(handleTotal(tableMeta, 3)).toFixed(1)} value={Number(value).toFixed(1)}
onBlur={(event) => {
// updateValue(event.target.value)
handleChange(event.target.value, tableMeta, 3)
// console.log(dataTable2)
}}
/> />
} }
/> />
</div> : </div> :
tableMeta.rowData[3] === 2 ? String(tableMeta.rowData[8]).toUpperCase() === 'INCOME BEFORE TAX (NPBT)' ?
<span style={{ fontSize: 12, textAlign: 'right' }}> <div style={{ flex: 1 }}>
<NumberFormat <FormControlLabel
thousandSeparator={true} style={{ margin: 0 }}
style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }} value={value}
type="text" control={
placeholder=""
disabled={true}
value={Number(handleTotal(tableMeta, 2)).toFixed(1)}
/>
</span>
:
tableMeta.rowData[3] === 4 ?
null
:
tableMeta.rowData[3] === 6 ?
<NumberFormat
thousandSeparator={true}
style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }}
type="text"
placeholder=""
disabled={true}
value={Number(handleTotal(tableMeta, 6)).toFixed(1)}
/>
:
tableMeta.rowData[3] === 5 ?
<NumberFormat <NumberFormat
thousandSeparator={true} thousandSeparator={true}
style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }} style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }}
type="text" type="text"
placeholder="" placeholder="input"
disabled={true} disabled={this.props.isApprover == true ? true : ((this.props.lastStatus === 'SUBMIT' || this.props.lastStatus === 'REVISION') && this.props.prevRevision === false && (this.props.status === 'revision' || this.props.status === 'not-yet' || this.props.status === 'draft' || this.props.status === 'submitted') ? false : true)}
value={Number(handleTotal(tableMeta, 5)).toFixed(1)} value={Number(handleNewFormula(tableMeta, 3, "@11-@13-@35+@53+@60")).toFixed(1)}
/> />
: }
tableMeta.rowData[3] === 1 ? />
</div>
:
String(tableMeta.rowData[8]).toUpperCase() === 'TAXABLE INCOME' ?
<div style={{ flex: 1 }}>
<FormControlLabel
style={{ margin: 0 }}
value={value}
control={
<NumberFormat <NumberFormat
thousandSeparator={true} thousandSeparator={true}
style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }} style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }}
type="text" type="text"
placeholder="" placeholder="input"
disabled={true} disabled={this.props.isApprover == true ? true : ((this.props.lastStatus === 'SUBMIT' || this.props.lastStatus === 'REVISION') && this.props.prevRevision === false && (this.props.status === 'revision' || this.props.status === 'not-yet' || this.props.status === 'draft' || this.props.status === 'submitted') ? false : true)}
value={Number(handleTotal(tableMeta, 1)).toFixed(1)} value={Number(handleNewFormula(tableMeta, 3, "@77-@81")).toFixed(1)}
/> />
: }
tableMeta.rowData[3] === 7 ? />
(Number(handleTotal(tableMeta, 1)) >= Number(this.state.minValue) && Number(handleTotal(tableMeta, 1)) <= Number(this.state.maxValue)) ? </div>
:
String(tableMeta.rowData[8]).toUpperCase() === 'CORPORATE INCOME TAX' ?
<div style={{ flex: 1 }}>
<FormControlLabel
style={{ margin: 0 }}
value={value}
control={
<NumberFormat
thousandSeparator={true}
style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }}
type="text"
placeholder="input"
disabled={this.props.isApprover == true ? true : ((this.props.lastStatus === 'SUBMIT' || this.props.lastStatus === 'REVISION') && this.props.prevRevision === false && (this.props.status === 'revision' || this.props.status === 'not-yet' || this.props.status === 'draft' || this.props.status === 'submitted') ? false : true)}
value={Number(handleNewFormula(tableMeta, 3, "@83-@87#TP2")).toFixed(1)}
/>
}
/>
</div>
:
String(tableMeta.rowData[8]).toUpperCase() === 'CORPORATE INCOME TAX AFTER ADJUSTMENT' ?
<div style={{ flex: 1 }}>
<FormControlLabel
style={{ margin: 0 }}
value={value}
control={
<NumberFormat <NumberFormat
thousandSeparator={true} thousandSeparator={true}
style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }} style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }}
type="text" type="text"
placeholder="" placeholder="input"
disabled={true} disabled={this.props.isApprover == true ? true : ((this.props.lastStatus === 'SUBMIT' || this.props.lastStatus === 'REVISION') && this.props.prevRevision === false && (this.props.status === 'revision' || this.props.status === 'not-yet' || this.props.status === 'draft' || this.props.status === 'submitted') ? false : true)}
value={Number(handleTotal(tableMeta, 1)).toFixed(1)} value={Number(handleNewFormula(tableMeta, 3, "@87-@88")).toFixed(1)}
/> : />
<LightTooltip title={this.state.minValue === null ? `Value Should be 0` : `Value Should be (${this.state.minValue}) up to (${this.state.maxValue})`} arrow> }
/>
</div>
:
String(tableMeta.rowData[8]).toUpperCase() === 'UNDER PAYMENT /(OVER PAYMENT ) INCOME TAX ART. 29' ?
<div style={{ flex: 1 }}>
<FormControlLabel
style={{ margin: 0 }}
value={value}
control={
<NumberFormat
thousandSeparator={true}
style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }}
type="text"
placeholder="input"
disabled={this.props.isApprover == true ? true : ((this.props.lastStatus === 'SUBMIT' || this.props.lastStatus === 'REVISION') && this.props.prevRevision === false && (this.props.status === 'revision' || this.props.status === 'not-yet' || this.props.status === 'draft' || this.props.status === 'submitted') ? false : true)}
value={Number(handleNewFormula(tableMeta, 3, "@87-@88")).toFixed(1)}
/>
}
/>
</div>
:
tableMeta.rowData[3] === 3 ?
<div style={{ flex: 1 }}>
<FormControlLabel
style={{ margin: 0 }}
value={value}
control={
<NumberFormat
thousandSeparator={true}
style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }}
type="text"
placeholder="input"
disabled={this.props.isApprover == true ? true : ((this.props.lastStatus === 'SUBMIT' || this.props.lastStatus === 'REVISION') && this.props.prevRevision === false && (this.props.status === 'revision' || this.props.status === 'not-yet' || this.props.status === 'draft' || this.props.status === 'submitted') ? false : true)}
value={Number(handleTotal(tableMeta, 3)).toFixed(1)}
/>
}
/>
</div> :
tableMeta.rowData[3] === 2 ?
<span style={{ fontSize: 12, textAlign: 'right' }}>
<NumberFormat <NumberFormat
thousandSeparator={true} thousandSeparator={true}
style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent', color: 'red' }} style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }}
type="text" type="text"
placeholder="" placeholder=""
disabled={true} disabled={true}
value={Number(handleTotal(tableMeta, 1)).toFixed(1)} value={Number(handleTotal(tableMeta, 2)).toFixed(1)}
/> />
</LightTooltip> </span>
: :
null tableMeta.rowData[3] === 4 ?
null
:
tableMeta.rowData[3] === 6 ?
<NumberFormat
thousandSeparator={true}
style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }}
type="text"
placeholder=""
disabled={true}
value={Number(handleTotal(tableMeta, 6)).toFixed(1)}
/>
:
tableMeta.rowData[3] === 5 ?
<NumberFormat
thousandSeparator={true}
style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }}
type="text"
placeholder=""
disabled={true}
value={Number(handleTotal(tableMeta, 5)).toFixed(1)}
/>
:
tableMeta.rowData[3] === 1 ?
<NumberFormat
thousandSeparator={true}
style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }}
type="text"
placeholder=""
disabled={true}
value={Number(handleTotal(tableMeta, 1)).toFixed(1)}
/>
:
tableMeta.rowData[3] === 7 ?
(Number(handleTotal(tableMeta, 1)) >= Number(this.state.minValue) && Number(handleTotal(tableMeta, 1)) <= Number(this.state.maxValue)) ?
<NumberFormat
thousandSeparator={true}
style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent' }}
type="text"
placeholder=""
disabled={true}
value={Number(handleTotal(tableMeta, 1)).toFixed(1)}
/> :
<LightTooltip title={this.state.minValue === null ? `Value Should be 0` : `Value Should be (${this.state.minValue}) up to (${this.state.maxValue})`} arrow>
<NumberFormat
thousandSeparator={true}
style={{ fontSize: 12, textAlign: 'right', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent', color: 'red' }}
type="text"
placeholder=""
disabled={true}
value={Number(handleTotal(tableMeta, 1)).toFixed(1)}
/>
</LightTooltip>
:
null
} }
</div> </div>
{/* </div> */} {/* </div> */}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment