BudgetTahunan.js 90 KB
Newer Older
Deni Rinaldi's avatar
Deni Rinaldi committed
1
import React, { Component } from 'react';
d.arizona's avatar
d.arizona committed
2
import { Typography, Paper, TextField, MenuItem, Select, FormControlLabel, Snackbar, withStyles, createMuiTheme, MuiThemeProvider, Checkbox, Input } from '@material-ui/core';
Deni Rinaldi's avatar
Deni Rinaldi committed
3 4
import MUIDataTable from 'mui-datatables';
import Images from '../assets/Images';
5
import BalanceSheet from './BudgetTahunan/BalanceSheet';
Deni Rinaldi's avatar
Deni Rinaldi committed
6 7
import api from '../api';
import Autocomplete from '@material-ui/lab/Autocomplete';
Deni Rinaldi's avatar
Deni Rinaldi committed
8
import MuiAlert from '@material-ui/lab/Alert';
Deni Rinaldi's avatar
Deni Rinaldi committed
9
import { titleCase } from '../library/Utils';
10
import ProfitLoss from './BudgetTahunan/ProfitLoss';
11
import TaxPlanning from './BudgetTahunan/TaxPlanning';
faisalhamdi's avatar
faisalhamdi committed
12
import FixedAssetsMovement from './BudgetTahunan/FixedAssetsMovement';
13
import CorporateAnnualTarget from './BudgetTahunan/CorporateAnnualTarget';
14 15 16
import { ExcelRenderer } from 'react-excel-renderer';
import UploadFile from "../library/Upload";
import { format } from 'date-fns';
Deni Rinaldi's avatar
Deni Rinaldi committed
17
import Constant from '../library/Constant';
Deni Rinaldi's avatar
Deni Rinaldi committed
18
import PropagateLoader from "react-spinners/PropagateLoader"
Deni Rinaldi's avatar
Deni Rinaldi committed
19
import CashFlow from './BudgetTahunan/CashFlow';
Deni Rinaldi's avatar
Deni Rinaldi committed
20
import { DatePicker } from '@material-ui/pickers';
d.arizona's avatar
d.arizona committed
21
import moment from 'moment';
Deni Rinaldi's avatar
Deni Rinaldi committed
22

Deni Rinaldi's avatar
Deni Rinaldi committed
23 24 25
var ct = require("../library/CustomTable");
const getMuiTheme = () => createMuiTheme(ct.customTable());

Deni Rinaldi's avatar
Deni Rinaldi committed
26 27
const Alert = withStyles({
})((props) => <MuiAlert elevation={6} variant="filled" {...props} />);
Deni Rinaldi's avatar
Deni Rinaldi committed
28 29 30 31 32 33

export default class BudgetTahunan extends Component {
    constructor(props) {
        super(props)
        this.state = {
            perusahaan: 'TAP Group',
34 35
            listRevision: null,
            revision: null,
36
            visibleBudgetTahunan: true,
Deni Rinaldi's avatar
Deni Rinaldi committed
37
            visibleBS: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
38 39
            listPeriode: null,
            periode: null,
Deni Rinaldi's avatar
Deni Rinaldi committed
40 41
            listCompany: null,
            company: null,
42
            report_id: null,
faisalhamdi's avatar
faisalhamdi committed
43
            visiblePL: false,
44
            visibleFAM: false,
45
            visibleCAT: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
46
            visibleCF: false,
47
            listAttachment: [],
Deni Rinaldi's avatar
Deni Rinaldi committed
48
            visibleUpload: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
49 50 51 52
            revisionTable: null,
            alert: false,
            tipeAlert: '',
            messageAlert: '',
Deni Rinaldi's avatar
Deni Rinaldi committed
53
            submissionID: null,
Deni Rinaldi's avatar
Deni Rinaldi committed
54
            isSubmit: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
55 56
            visibleTableHistory: false,
            isApprover: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
57
            lastStatus: "",
d.arizona's avatar
d.arizona committed
58 59 60
            intent: "",
            approverID: null,
            pic: '',
a.bairuha's avatar
a.bairuha committed
61
            submitter: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
62
            detailRevisiCheck: [],
Deni Rinaldi's avatar
Deni Rinaldi committed
63
            lastRevision: "",
a.bairuha's avatar
a.bairuha committed
64 65
            checkApprover: false,
            lastPeriod: '',
d.arizona's avatar
d.arizona committed
66 67
            latestPeriode: '',
            minDateRevision: new Date(),
d.arizona's avatar
d.arizona committed
68
            maxDateRevision: new Date(),
Dida Adams Arizona's avatar
Dida Adams Arizona committed
69
            btnApprove: false,
r.kurnia's avatar
r.kurnia committed
70 71 72
            isAdmin: false,
            btncreate: false,
            loadview: false
Deni Rinaldi's avatar
Deni Rinaldi committed
73
        }
d.arizona's avatar
d.arizona committed
74
        this.myRef = React.createRef()
75
        this.fileHandler = this.fileHandler.bind(this);
Deni Rinaldi's avatar
Deni Rinaldi committed
76
    }
Deni Rinaldi's avatar
Deni Rinaldi committed
77

d.arizona's avatar
d.arizona committed
78 79
    scrollToMyRef = () => window.scrollTo(0, this.myRef.current.offsetTop)

Deni Rinaldi's avatar
Deni Rinaldi committed
80
    componentDidMount() {
Deni Rinaldi's avatar
Deni Rinaldi committed
81
        this.setState({ loading: true }, () => {
idlanirined's avatar
idlanirined committed
82 83
            document.body.style.overflow = 'hidden';
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
84 85
        this.props.selectIndex('Master Budget & CAT')
        if (this.props.location.state !== undefined) {
Deni Rinaldi's avatar
Deni Rinaldi committed
86
            console.log(this.props);
Deni Rinaldi's avatar
Deni Rinaldi committed
87
            this.setState({ userType: this.props.location.state.userType, intent: 'Home', lastPeriod: this.props.location.state.rawData.periode, rawData: this.props.location.state.rawData }, () => {
Deni Rinaldi's avatar
Deni Rinaldi committed
88 89
                this.getPermission()
                // this.checkApprover()
Deni Rinaldi's avatar
Deni Rinaldi committed
90 91
            })
        } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
92 93
            this.getPermission()
            // this.checkApprover()
Deni Rinaldi's avatar
Deni Rinaldi committed
94 95
        }
    }
Deni Rinaldi's avatar
Deni Rinaldi committed
96

Deni Rinaldi's avatar
Deni Rinaldi committed
97 98 99 100 101 102 103 104 105 106 107 108 109
    getPermission() {
        let payload = {
            menu: "Master Budget & CAT"
        }
        api.create().getPermission(payload).then(response => {
            console.log(response)
            if (response.data) {
                if (response.data.status === "success") {
                    this.setState({
                        btncreate: response.data.data.create,
                        btnedit: response.data.data.edit,
                        btndelete: response.data.data.delete,
                        // load: true
Deni Rinaldi's avatar
Deni Rinaldi committed
110
                    }, () => {
Deni Rinaldi's avatar
Deni Rinaldi committed
111 112 113
                        this.checkApprover()
                    })
                } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
114 115 116 117 118 119 120
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
                        if (response.data.message.includes("Someone Logged In")) {
                            setTimeout(() => {
                                localStorage.removeItem(Constant.TOKEN)
                                window.location.reload();
                            }, 1000);
                        }
Deni Rinaldi's avatar
Deni Rinaldi committed
121 122 123
                    })
                }
            } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
124
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
Deni Rinaldi's avatar
Deni Rinaldi committed
125 126 127
            }
        })
    }
Deni Rinaldi's avatar
Deni Rinaldi committed
128

Dida Adams Arizona's avatar
Dida Adams Arizona committed
129 130 131 132 133 134
    getRole(id) {
        api.create().getDetailRole(id).then((response) => {
            if (response.data) {
                if (response.ok) {
                    if (response.data.status === 'success') {
                        // this.setState({ tempData: response.data.data, privileges: response.data.data.privileges })
Dida Adams Arizona's avatar
Dida Adams Arizona committed
135
                        // // console.log(response.data.data)
Dida Adams Arizona's avatar
Dida Adams Arizona committed
136
                        if (String(response.data.data.role_name).toLocaleLowerCase() == 'superadmin') {
Deni Rinaldi's avatar
Deni Rinaldi committed
137
                            this.setState({ isAdmin: true })
Dida Adams Arizona's avatar
Dida Adams Arizona committed
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
                        }
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
                            if (response.data.message.includes("Someone Logged In")) {
                                setTimeout(() => {
                                    localStorage.removeItem(Constant.TOKEN)
                                    window.location.reload();
                                }, 1000);
                            }
                        })
                    }
                } else {
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
                }
            } else {
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
            }
        })
    }

idlanirined's avatar
idlanirined committed
158 159 160 161
    componentWillUnmount() {
        document.body.style.overflow = 'unset';
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
162 163
    checkApprover() {
        api.create().checkApprover().then(response => {
Deni Rinaldi's avatar
Deni Rinaldi committed
164
            console.log(response.data.data)
r.kurnia's avatar
r.kurnia committed
165 166
            if (response.data) {
                if (response.data.status === "success") {
Deni Rinaldi's avatar
Deni Rinaldi committed
167 168 169 170 171 172 173 174
                    // // console.log(response);
                    if (response.data.data.is_approver === true) {
                        this.setState({ isApprover: true, checkApprover: true }, () =>
                            this.getPeriode())
                    } else {
                        this.setState({ isApprover: false, checkApprover: false }, () =>
                            this.getDetailUser())
                    }
r.kurnia's avatar
r.kurnia committed
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190
                } else {
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
                        if (response.data.message.includes("Someone Logged In")) {
                            setTimeout(() => {
                                localStorage.removeItem(Constant.TOKEN)
                                window.location.reload();
                            }, 1000);
                        }
                    })
                }
            } else {
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
            }
        })
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
191 192 193 194 195
    getCompanySubmitted() {
        let body = {
            "periode": this.state.periode.periode
        }
        api.create().getCompanySubmitted(body).then(response => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
196
            // // console.log(response);
Deni Rinaldi's avatar
Deni Rinaldi committed
197 198
            if (response.data) {
                if (response.data.status === 'success') {
idlanirined's avatar
idlanirined committed
199 200 201 202 203 204 205 206
                    if (response.data.data.length > 0) {
                        let data = response.data.data
                        let companyData = data.map((item) => {
                            return {
                                company_id: item.company_id,
                                company_name: item.company_name,
                            }
                        })
Deni Rinaldi's avatar
Deni Rinaldi committed
207

idlanirined's avatar
idlanirined committed
208 209 210
                        let defaultProps = {
                            options: companyData,
                            getOptionLabel: (option) => titleCase(option.company_name),
211 212 213 214 215 216
                        }
                        let indexID = null
                        if (this.state.rawData !== undefined) {
                            indexID = companyData.findIndex((val) => val.company_id == this.state.rawData.company_id)
                        }

Deni Rinaldi's avatar
Deni Rinaldi committed
217
                        this.setState({ listCompany: defaultProps, company: indexID == null ? companyData[0] : companyData[indexID] }, () => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
218
                            // // console.log(response.data.data);
idlanirined's avatar
idlanirined committed
219 220 221 222 223
                            if (response.data.data.length > 0) {
                                this.getRevision()
                            } else {
                                this.setState({ listRevision: null, revision: null, dataTable: [], checkApprover: false, lastRevision: "", visibleTableHistory: false })
                            }
Deni Rinaldi's avatar
Deni Rinaldi committed
224
                            //
idlanirined's avatar
idlanirined committed
225 226
                        })
                    } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
227
                        this.setState({ listRevision: null, revision: null, dataTable: [], checkApprover: false, lastRevision: "", visibleTableHistory: false, loading: false }, () => {
idlanirined's avatar
idlanirined committed
228 229
                            document.body.style.overflow = 'unset';
                        })
idlanirined's avatar
idlanirined committed
230
                    }
Deni Rinaldi's avatar
Deni Rinaldi committed
231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246
                } else {
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
                        if (response.data.message.includes("Someone Logged In")) {
                            setTimeout(() => {
                                localStorage.removeItem(Constant.TOKEN)
                                window.location.reload();
                            }, 1000);
                        }
                    })
                }
            } else {
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error', listCompany: null, company: null })
            }
        })
    }

247 248 249 250 251 252 253
    getReportAttachment() {
        let payload = {
            "company_id": this.state.company.company_id,
            "periode": this.state.periode.periode,
            "revision": this.state.revision.revision,
        }
        api.create().getMasterBudgetAtt(payload).then(response => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
254
            // // console.log(response)
255 256 257 258 259
            if (response.data) {
                if (response.data.status === "success") {
                    this.setState({ listAttachment: response.data.data })
                }
            }
Dida Adams Arizona's avatar
Dida Adams Arizona committed
260
            // // console.log(response);
261 262 263
        })
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
264
    getReport() {
Deni Rinaldi's avatar
Deni Rinaldi committed
265 266
        let payload = {
            "company_id": this.state.company.company_id,
Deni Rinaldi's avatar
Deni Rinaldi committed
267
            "periode": this.state.periode.periode,
d.arizona's avatar
d.arizona committed
268
            "report_type": "Master Budget",
Deni Rinaldi's avatar
Deni Rinaldi committed
269 270
        }
        api.create().getReportTypeBody(payload).then(response => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
271
            // console.log(response);
Deni Rinaldi's avatar
Deni Rinaldi committed
272 273 274 275
            if (response.data) {
                if (response.data.status === "success") {
                    let dataTable = response.data.data.map((item, index) => {
                        return [
276
                            item.number,
idlanirined's avatar
idlanirined committed
277
                            item.report_name === 'CAT' ? 'Corporate Annual Target' : item.report_name,
278
                            item.revision,
Deni Rinaldi's avatar
Deni Rinaldi committed
279
                            this.state.lastStatus === 'APPROVED' ? 'CLOSED' : this.state.isSubmit === false ? "CLOSED" : item.current_status,
280
                            item.report_id,
a.bairuha's avatar
a.bairuha committed
281
                            Number(item.revision) > 0 ? (item.current_status == "not-yet" ? false : item.is_can_upload) : item.is_can_upload,
282
                            item.revision
Deni Rinaldi's avatar
Deni Rinaldi committed
283 284
                        ]
                    })
Deni Rinaldi's avatar
Deni Rinaldi committed
285 286
                    let dataTableRevision = []
                    response.data.data.map((item, index) => {
Deni Rinaldi's avatar
Deni Rinaldi committed
287 288 289 290 291 292 293 294
                        if (item.report_name !== 'Cash Flow') {
                            dataTableRevision.push([
                                item.report_id,
                                item.report_name === 'CAT' ? 'Corporate Annual Target' : item.report_name,
                                "",
                                item.number
                            ])
                        }
Deni Rinaldi's avatar
Deni Rinaldi committed
295
                    })
Dida Adams Arizona's avatar
Dida Adams Arizona committed
296
                    // // console.log(dataTableRevision);
Deni Rinaldi's avatar
Deni Rinaldi committed
297
                    this.setState({ dataTable, loading: false, dataTableRevision: dataTableRevision.sort((a, b) => a.number - b.number), dataForRevision: response.data.data }, () => {
idlanirined's avatar
idlanirined committed
298 299
                        document.body.style.overflow = 'unset';
                    })
Deni Rinaldi's avatar
Deni Rinaldi committed
300
                }
Deni Rinaldi's avatar
Deni Rinaldi committed
301
            } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
302
                this.setState({ loading: false }, () => {
idlanirined's avatar
idlanirined committed
303 304
                    document.body.style.overflow = 'unset';
                })
Deni Rinaldi's avatar
Deni Rinaldi committed
305 306 307 308
            }
        })
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
309 310 311 312 313 314
    getLatestPeriodSubmit() {
        let body = {
            "company_id": this.state.company.company_id,
            "periode": this.state.periode.periode
        }
        api.create().getSubmitMasterBudget(body).then(response => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
315
            // // console.log(response);
Deni Rinaldi's avatar
Deni Rinaldi committed
316 317
            if (response.data) {
                if (response.data.status === "success") {
Deni Rinaldi's avatar
Deni Rinaldi committed
318 319 320 321
                    this.setState({ isSubmit: response.data.data.is_can_submit }, () => {
                        this.getReport()
                        this.getReportAttachment()
                    })
Deni Rinaldi's avatar
Deni Rinaldi committed
322 323 324 325 326
                }
            }
        })
    }

EKSAD's avatar
EKSAD committed
327 328 329 330 331 332
    getDetailUser() {
        let userId = localStorage.getItem(Constant.USER)
        api.create().getDetailUser(userId).then((response) => {
            if (response.data) {
                if (response.ok) {
                    if (response.data.status === 'success') {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
333
                        this.getRole(response.data.data.role_id)
Deni Rinaldi's avatar
Deni Rinaldi committed
334
                        this.setState({ userCompany: response.data.data.company }, () => {
EKSAD's avatar
EKSAD committed
335
                            this.getCompanyActive()
Deni Rinaldi's avatar
Deni Rinaldi committed
336
                        })
EKSAD's avatar
EKSAD committed
337 338
                    }
                }
Deni Rinaldi's avatar
Deni Rinaldi committed
339
            }
EKSAD's avatar
EKSAD committed
340 341 342
        })
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
343 344
    getCompanyActive() {
        api.create().getPerusahaanActive().then((response) => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
345
            // // console.log(response);
Deni Rinaldi's avatar
Deni Rinaldi committed
346 347 348
            if (response.data) {
                if (response.data.status === 'success') {
                    let data = response.data.data
Deni Rinaldi's avatar
Deni Rinaldi committed
349
                    let comID = this.state.rawData ? this.state.rawData.company_id : 0
Deni Rinaldi's avatar
Deni Rinaldi committed
350 351 352 353 354 355
                    let companyData = data.map((item) => {
                        return {
                            company_id: item.company_id,
                            company_name: item.company_name,
                        }
                    })
Deni Rinaldi's avatar
Deni Rinaldi committed
356

EKSAD's avatar
EKSAD committed
357
                    let arrayBaru = []
Deni Rinaldi's avatar
Deni Rinaldi committed
358
                    this.state.userCompany.map((item, index) => {
EKSAD's avatar
EKSAD committed
359 360 361 362 363
                        let indexID = companyData.findIndex((val) => val.company_id == item)
                        if (indexID !== -1) {
                            arrayBaru.push(companyData[indexID])
                        }
                    })
Deni Rinaldi's avatar
Deni Rinaldi committed
364

Deni Rinaldi's avatar
Deni Rinaldi committed
365
                    let defaultProps = {
EKSAD's avatar
EKSAD committed
366
                        options: arrayBaru,
Deni Rinaldi's avatar
Deni Rinaldi committed
367 368
                        getOptionLabel: (option) => titleCase(option.company_name),
                    };
Deni Rinaldi's avatar
Deni Rinaldi committed
369
                    let index = arrayBaru.findIndex((val) => val.company_id == comID)
Deni Rinaldi's avatar
Deni Rinaldi committed
370
                    this.setState({ listCompany: defaultProps, company: arrayBaru.length < 1 ? companyData[0] : (index == -1 ? arrayBaru[0] : arrayBaru[index]) }, () => {
Deni Rinaldi's avatar
Deni Rinaldi committed
371
                        this.getLastPeriod()
Deni Rinaldi's avatar
Deni Rinaldi committed
372 373 374
                    })
                } else {
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
a.bairuha's avatar
a.bairuha committed
375
                        if (response.data.message.includes("Someone Logged In")) {
Deni Rinaldi's avatar
Deni Rinaldi committed
376 377 378 379 380 381 382
                            setTimeout(() => {
                                localStorage.removeItem(Constant.TOKEN)
                                window.location.reload();
                            }, 1000);
                        }
                    })
                }
Deni Rinaldi's avatar
Deni Rinaldi committed
383
            } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
384
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error', listCompany: null, company: null })
Deni Rinaldi's avatar
Deni Rinaldi committed
385 386 387 388
            }
        })
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
389
    getLastPeriod() {
Deni Rinaldi's avatar
Deni Rinaldi committed
390
        api.create().getLastPeriod(this.state.company.company_id).then(response => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
391
            // // console.log(response);
Deni Rinaldi's avatar
Deni Rinaldi committed
392
            if (response.data.status === "success") {
Deni Rinaldi's avatar
Deni Rinaldi committed
393
                this.setState({ lastPeriod: response.data.data.last_periode, latestPeriode: response.data.data.latest_periode }, () => {
Deni Rinaldi's avatar
Deni Rinaldi committed
394 395 396 397 398 399
                    this.getPeriode()
                })
            }
        })
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
400
    getPeriode() {
401
        api.create().getPeriodeTransaction().then(response => {
Deni Rinaldi's avatar
Deni Rinaldi committed
402 403
            // let dateNow = new Date
            // let year = this.state.rawData ? this.state.rawData.periode : format(dateNow, 'yyyy')
d.arizona's avatar
d.arizona committed
404
            let currentYear = new Date().getFullYear()
Dida Adams Arizona's avatar
Dida Adams Arizona committed
405
            // // console.log(currentYear)
406 407
            if (response.data) {
                if (response.data.status === "success") {
a.bairuha's avatar
a.bairuha committed
408 409
                    let data = []
                    response.data.data.map((item) => {
d.arizona's avatar
d.arizona committed
410 411 412 413 414 415 416 417
                        if (this.state.isApprover) {
                            if (item >= 2000 && item <= (Number(currentYear) + 1)) {
                                data.push(item)
                            }
                        } else {
                            if ((item >= 2000) && (item == this.state.lastPeriod || item < this.state.lastPeriod)) {
                                data.push(item)
                            }
a.bairuha's avatar
a.bairuha committed
418 419
                        }
                    })
420 421 422 423 424 425 426 427 428
                    let periodeData = data.map((item) => {
                        return {
                            periode: item,
                        }
                    })
                    let defaultProps = {
                        options: periodeData,
                        getOptionLabel: (option) => option.periode,
                    };
Deni Rinaldi's avatar
Deni Rinaldi committed
429
                    let periode = (this.state.lastPeriod == "" ? String(Number(currentYear) + 1) : this.state.lastPeriod)
Deni Rinaldi's avatar
Deni Rinaldi committed
430
                    let index = data.sort((a, b) => a - b).findIndex((val) => val === periode)
Dida Adams Arizona's avatar
Dida Adams Arizona committed
431 432 433 434
                    // // console.log(data)
                    // // console.log(this.state.latestPeriode)
                    // // console.log(periodeData)
                    // // console.log(index)
Deni Rinaldi's avatar
Deni Rinaldi committed
435
                    this.setState({ listPeriode: defaultProps, periode: index === -1 ? periodeData[0] : periodeData[index] }, () => {
Deni Rinaldi's avatar
Deni Rinaldi committed
436 437 438 439 440
                        if (this.state.isApprover === true) {
                            this.getCompanySubmitted()
                        } else {
                            this.getRevision()
                        }
441 442 443 444 445 446 447 448 449 450 451 452
                    })
                }
            }
        })
    }

    getRevision() {
        let payload = {
            "company_id": this.state.company.company_id,
            "periode": this.state.periode.periode
        }
        api.create().getRevision(payload).then(response => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
453
            // // console.log(response);
454 455 456 457 458 459 460 461 462 463 464 465 466
            if (response.data) {
                if (response.data.status === "success") {
                    let data = response.data.data
                    let revisionData = data.map((item) => {
                        return {
                            revision: item,
                        }
                    })
                    let defaultProps = {
                        options: revisionData,
                        getOptionLabel: (option) => option.revision,
                    };
                    this.setState({ listRevision: defaultProps, revision: revisionData[0] }, () => {
Deni Rinaldi's avatar
Deni Rinaldi committed
467
                        this.getSubmission()
468
                    })
Deni Rinaldi's avatar
Deni Rinaldi committed
469 470 471 472 473 474 475 476 477 478 479 480 481
                } else {
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
                        if (response.data.message.includes("Someone Logged In")) {
                            setTimeout(() => {
                                localStorage.removeItem(Constant.TOKEN)
                                window.location.reload();
                            }, 1000);
                        }
                    })
                }
            } else {
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error', listRevision: null, revision: null })
            }
Deni Rinaldi's avatar
Deni Rinaldi committed
482 483 484
        })
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
485
    getSubmission() {
Deni Rinaldi's avatar
Deni Rinaldi committed
486
        this.setState({ loading: true }, () => {
idlanirined's avatar
idlanirined committed
487 488
            document.body.style.overflow = 'hidden';
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
489 490
        let payload = {
            "company_id": this.state.company.company_id,
Deni Rinaldi's avatar
Deni Rinaldi committed
491 492
            "periode": this.state.periode.periode,
            "is_approver": this.state.isApprover
Deni Rinaldi's avatar
Deni Rinaldi committed
493 494
        }
        api.create().getSubmission(payload).then(response => {
Deni Rinaldi's avatar
Deni Rinaldi committed
495
            console.log(response)
Deni Rinaldi's avatar
Deni Rinaldi committed
496
            if (response.data) {
Deni Rinaldi's avatar
Deni Rinaldi committed
497
                if (response.data.status === "success") {
Deni Rinaldi's avatar
Deni Rinaldi committed
498
                    this.setState({
Deni Rinaldi's avatar
Deni Rinaldi committed
499
                        submissionID: response.data.data.submission_id,
a.bairuha's avatar
a.bairuha committed
500
                        submitter: response.data.data.submitter,
Deni Rinaldi's avatar
Deni Rinaldi committed
501
                        approverID: response.data.data.approve_id, pic: response.data.data.approver == null ? '' : response.data.data.approver,
Deni Rinaldi's avatar
Deni Rinaldi committed
502
                        lastStatus: response.data.data.last_status === null ? 'SUBMIT' : response.data.data.last_status,
Deni Rinaldi's avatar
Deni Rinaldi committed
503
                        lastRevision: response.data.data.last_revision,
d.arizona's avatar
d.arizona committed
504 505
                        btnApprove: response.data.data.is_submit,
                        // loading: false
Deni Rinaldi's avatar
Deni Rinaldi committed
506
                    }, () => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
507
                        // // console.log(this.state.lastStatus);
Deni Rinaldi's avatar
Deni Rinaldi committed
508
                        this.historyApproval()
Deni Rinaldi's avatar
Deni Rinaldi committed
509
                        this.getLatestPeriodSubmit()
Deni Rinaldi's avatar
Deni Rinaldi committed
510
                        api.create().checkApprover().then(response => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
511
                            // // console.log(response);
Deni Rinaldi's avatar
Deni Rinaldi committed
512
                            if (this.state.btncreate === true && this.state.btnedit === true) {
Deni Rinaldi's avatar
Deni Rinaldi committed
513 514 515 516 517 518 519
                                this.setState({ isApprover: false }, () => {
                                    if (response.data.data.is_approver === true) {
                                        this.setState({ checkApprover: true })
                                    } else {
                                        this.setState({ checkApprover: false })
                                    }
                                })
Deni Rinaldi's avatar
Deni Rinaldi committed
520
                            } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
521 522 523 524 525 526 527
                                this.setState({ isApprover: true }, () => {
                                    if (response.data.data.is_approver === true) {
                                        this.setState({ checkApprover: true })
                                    } else {
                                        this.setState({ checkApprover: false })
                                    }
                                })
Deni Rinaldi's avatar
Deni Rinaldi committed
528 529 530
                            }

                        })
Deni Rinaldi's avatar
Deni Rinaldi committed
531
                    })
Deni Rinaldi's avatar
Deni Rinaldi committed
532 533 534 535 536 537 538 539 540 541 542 543 544 545
                } else {
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning', submissionID: null, loading: false }, () => {
                        document.body.style.overflow = 'unset';
                        if (response.data.message.includes("Someone Logged In")) {
                            setTimeout(() => {
                                localStorage.removeItem(Constant.TOKEN)
                                window.location.reload();
                            }, 1000);
                        }
                    })
                }
            } else {
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
            }
Deni Rinaldi's avatar
Deni Rinaldi committed
546 547 548
        })
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
549 550
    historyApproval() {
        let body = {
Deni Rinaldi's avatar
Deni Rinaldi committed
551 552
            "company_id": this.state.company.company_id,
            "periode": this.state.periode.periode
Deni Rinaldi's avatar
Deni Rinaldi committed
553 554
        }
        api.create().historyApproval(body).then(response => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
555
            // // console.log(response);
Deni Rinaldi's avatar
Deni Rinaldi committed
556 557 558 559 560 561 562 563 564 565
            if (response.data.data.length > 0) {
                let dataTableHistory = response.data.data.map(item => {
                    return [
                        item.pic,
                        item.status_approval,
                        item.remarks,
                        item.item_revision,
                        item.history_approval_date
                    ]
                })
Deni Rinaldi's avatar
Deni Rinaldi committed
566
                this.setState({ dataTableHistory, visibleTableHistory: true })
Deni Rinaldi's avatar
Deni Rinaldi committed
567 568 569 570
            }
        })
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
571
    approvalSubmission(type) {
d.arizona's avatar
d.arizona committed
572
        this.scrollToMyRef()
Deni Rinaldi's avatar
Deni Rinaldi committed
573
        this.setState({ loading: true }, () => {
idlanirined's avatar
idlanirined committed
574 575
            document.body.style.overflow = 'hidden';
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
576
        let body = {
Deni Rinaldi's avatar
Deni Rinaldi committed
577
            "approval_id": this.state.approverID,
Deni Rinaldi's avatar
Deni Rinaldi committed
578
            "status": type,
d.arizona's avatar
d.arizona committed
579
            "detail": this.state.detailRevisiCheck
Deni Rinaldi's avatar
Deni Rinaldi committed
580
        }
d.arizona's avatar
d.arizona committed
581 582 583 584 585
        let payload = {
            "company_id": this.state.company.company_id,
            "min_periode": moment(this.state.minDateRevision).format('YYYY-MM-DD'),
            "max_periode": moment(this.state.maxDateRevision).format('YYYY-MM-DD')
        }
Dida Adams Arizona's avatar
Dida Adams Arizona committed
586
        // // console.log(payload)
Deni Rinaldi's avatar
Deni Rinaldi committed
587 588
        // console.log(this.props.location);
        // console.log(body)
d.arizona's avatar
d.arizona committed
589
        api.create().approvalSubmission(body).then((res) => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
590
            // // console.log(res)
Deni Rinaldi's avatar
Deni Rinaldi committed
591 592
            // this.setState({ loading: false }, () => {
            // })
d.arizona's avatar
d.arizona committed
593
            if (type == 'revision') {
Deni Rinaldi's avatar
Deni Rinaldi committed
594
                api.create().createPeriodeRevision(payload).then((res))
d.arizona's avatar
d.arizona committed
595
            }
Dida Adams Arizona's avatar
Dida Adams Arizona committed
596
            this.getSubmission()
d.arizona's avatar
d.arizona committed
597
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
598 599
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
600
    clickDetail(item, id, revision, status) {
idlanirined's avatar
idlanirined committed
601 602 603 604 605 606
        let items = ''
        if (item === 'Corporate Annual Target') {
            items = 'CAT'
        } else {
            items = item
        }
Dida Adams Arizona's avatar
Dida Adams Arizona committed
607
        // // console.log(this.state.dataForRevision);
Deni Rinaldi's avatar
Deni Rinaldi committed
608
        this.state.dataForRevision.map(i => {
idlanirined's avatar
idlanirined committed
609
            if (i.report_name === items) {
Deni Rinaldi's avatar
Deni Rinaldi committed
610 611 612 613 614 615 616
                if (i.revision !== revision) {
                    this.setState({ prevRevision: true })
                } else {
                    this.setState({ prevRevision: false })
                }
            }
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
617 618 619
        this.setState({
            report_id: id,
            revisionTable: revision,
Deni Rinaldi's avatar
Deni Rinaldi committed
620
            status: status
Deni Rinaldi's avatar
Deni Rinaldi committed
621 622 623 624 625 626 627 628 629
        }, () => {
            if (item === 'Balance Sheet') {
                this.setState({
                    visibleBudgetTahunan: false,
                    visibleBS: true,
                    visiblePL: false,
                    visibleCAT: false,
                    visibleFAM: false,
                    visibleTP: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
630
                    visibleCF: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
631 632 633 634 635 636 637 638
                })
            } else if (item === 'Profit Loss') {
                this.setState({
                    visibleBudgetTahunan: false,
                    visibleBS: false,
                    visiblePL: true,
                    visibleCAT: false,
                    visibleFAM: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
639 640
                    visibleTP: false,
                    visibleCF: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
641 642 643 644 645 646 647 648
                })
            } else if (item === 'Tax Planning') {
                this.setState({
                    visibleBudgetTahunan: false,
                    visibleBS: false,
                    visiblePL: false,
                    visibleCAT: false,
                    visibleFAM: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
649 650
                    visibleTP: true,
                    visibleCF: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
651 652 653 654 655 656 657 658
                })
            } else if (item === 'Fixed Assets Movement') {
                this.setState({
                    visibleBudgetTahunan: false,
                    visibleBS: false,
                    visiblePL: false,
                    visibleCAT: false,
                    visibleFAM: true,
Deni Rinaldi's avatar
Deni Rinaldi committed
659 660
                    visibleTP: false,
                    visibleCF: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
661
                })
idlanirined's avatar
idlanirined committed
662
            } else if (item === 'Corporate Annual Target') {
Deni Rinaldi's avatar
Deni Rinaldi committed
663 664 665 666 667 668
                this.setState({
                    visibleBudgetTahunan: false,
                    visibleBS: false,
                    visiblePL: false,
                    visibleCAT: true,
                    visibleFAM: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
669 670 671
                    visibleTP: false,
                    visibleCF: false,
                })
Deni Rinaldi's avatar
Deni Rinaldi committed
672
            } else if (item === "Cash Flow") {
Deni Rinaldi's avatar
Deni Rinaldi committed
673 674 675 676 677 678 679 680
                this.setState({
                    visibleBudgetTahunan: false,
                    visibleBS: false,
                    visiblePL: false,
                    visibleCAT: false,
                    visibleFAM: false,
                    visibleTP: false,
                    visibleCF: true,
Deni Rinaldi's avatar
Deni Rinaldi committed
681 682 683
                })
            }
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
684 685
    }

686 687 688 689 690
    handleChange(value, tableMeta) {
        let data = this.state.dataTable
        data[tableMeta.rowIndex][tableMeta.columnIndex] = value
    }

691 692 693
    fileHandler = (event) => {
        let fileObj = event
        ExcelRenderer(fileObj, (err, resp) => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
694
            // // console.log(resp)
695
            if (err) {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
696
                // // console.log(err);
697 698 699
            }
            else {
                const formData = new FormData();
Deni Rinaldi's avatar
Deni Rinaldi committed
700
                formData.append("revision", Number(this.state.lastRevision));
701 702 703 704 705 706 707 708 709 710 711 712 713
                formData.append("companyId", this.state.company.company_id);
                formData.append("periode", Number(this.state.periode.periode));
                formData.append("file", event);
                this.setState({ formData })
            }
        })
    }

    uploadAttachment(formData) {
        api.create().uploadAttachment(formData).then(response => {
            if (response.data) {
                if (response.data.status === "success") {
                    this.setState({ visibleUpload: false }, () => {
Deni Rinaldi's avatar
Deni Rinaldi committed
714
                        this.getSubmission()
715 716 717
                    })
                }
            }
Deni Rinaldi's avatar
Deni Rinaldi committed
718 719 720 721 722
        })
    }

    deleteAttachment(item) {
        api.create().deleteAttachment(item.attachment_id).then(response => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
723
            // // console.log(response);
Deni Rinaldi's avatar
Deni Rinaldi committed
724 725
            if (response.data) {
                if (response.data.status === "success") {
Deni Rinaldi's avatar
Deni Rinaldi committed
726
                    this.getSubmission()
Deni Rinaldi's avatar
Deni Rinaldi committed
727 728
                }
            }
729 730
        })
    }
Deni Rinaldi's avatar
Deni Rinaldi committed
731

Deni Rinaldi's avatar
Deni Rinaldi committed
732 733 734 735
    closeAlert() {
        this.setState({ alert: false })
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
736
    saveToMasterBudget(data) {
Deni Rinaldi's avatar
Deni Rinaldi committed
737
        this.setState({ loading: true }, () => {
idlanirined's avatar
idlanirined committed
738 739
            document.body.style.overflow = 'hidden';
        })
Dida Adams Arizona's avatar
Dida Adams Arizona committed
740
        // // console.log(JSON.stringify(data));
Deni Rinaldi's avatar
Deni Rinaldi committed
741
        api.create('UPLOAD').createSubmitReport(data).then(response => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
742
            // // console.log(response);
Deni Rinaldi's avatar
Deni Rinaldi committed
743 744
            if (response.data) {
                if (response.data.status === "success") {
Deni Rinaldi's avatar
Deni Rinaldi committed
745
                    this.getSubmission()
Deni Rinaldi's avatar
Deni Rinaldi committed
746
                } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
747 748
                    this.setState({ loading: false }, () => {
                        this.getSubmission()
idlanirined's avatar
idlanirined committed
749
                        document.body.style.overflow = 'unset';
Deni Rinaldi's avatar
Deni Rinaldi committed
750
                    })
Deni Rinaldi's avatar
Deni Rinaldi committed
751
                }
Deni Rinaldi's avatar
Deni Rinaldi committed
752
            } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
753
                this.setState({ loading: false }, () => {
Deni Rinaldi's avatar
Deni Rinaldi committed
754
                    this.getSubmission()
idlanirined's avatar
idlanirined committed
755
                    document.body.style.overflow = 'unset';
Deni Rinaldi's avatar
Deni Rinaldi committed
756
                })
Deni Rinaldi's avatar
Deni Rinaldi committed
757 758
            }
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
759 760
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
761 762 763
    async downloadAttachment(fileurl, name) {
        let length = name.split(".").length
        let fileType = name.split(".")[length - 1]
Dida Adams Arizona's avatar
Dida Adams Arizona committed
764
        // // console.log(fileType);
faisalhamdi's avatar
faisalhamdi committed
765
        let url = `${process.env.REACT_APP_URL_MAIN_BE}/public/transaction/master_budget/download_attachment?fileName=${fileurl}&&fileType=${fileType}`
Dida Adams Arizona's avatar
Dida Adams Arizona committed
766
        // // console.log(url);
Deni Rinaldi's avatar
Deni Rinaldi committed
767
        let res = await fetch(
faisalhamdi's avatar
faisalhamdi committed
768
            `${process.env.REACT_APP_URL_MAIN_BE}/public/transaction/master_budget/download_attachment?fileName=${fileurl}&&fileType=${fileType}`
Deni Rinaldi's avatar
Deni Rinaldi committed
769 770
        )
        res = await res.blob()
Deni Rinaldi's avatar
Deni Rinaldi committed
771
        this.setState({ loading: false }, () => {
idlanirined's avatar
idlanirined committed
772 773
            document.body.style.overflow = 'unset';
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
774 775 776 777
        if (res.size > 0) {
            let url = window.URL.createObjectURL(res);
            let a = document.createElement('a');
            a.href = url;
Deni Rinaldi's avatar
Deni Rinaldi committed
778
            a.download = 'Master Budget Attachment.xlsx';
Deni Rinaldi's avatar
Deni Rinaldi committed
779 780 781 782
            a.click();
        }
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
783
    validate() {
Deni Rinaldi's avatar
Deni Rinaldi committed
784
        this.setState({ loading: true }, () => {
idlanirined's avatar
idlanirined committed
785 786
            document.body.style.overflow = 'hidden';
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
787
        let array = []
Deni Rinaldi's avatar
Deni Rinaldi committed
788
        let canSubmit = true
Deni Rinaldi's avatar
Deni Rinaldi committed
789
        this.state.dataTable.map(item => {
idlanirined's avatar
idlanirined committed
790 791 792 793
            // if (item[1] !== 'Cash Flow') {
            if (item[3] !== "submitted" && item[3] !== 'approved') {
                canSubmit = false
                array.push(item[3])
Deni Rinaldi's avatar
Deni Rinaldi committed
794
            }
idlanirined's avatar
idlanirined committed
795
            // }
Deni Rinaldi's avatar
Deni Rinaldi committed
796 797 798 799 800
            // if (item[3].includes("not-yet") || item[3].includes("draft")) {
            //     array.push(item[3])
            // } else {
            //     array.push(item[3])
            // }
Deni Rinaldi's avatar
Deni Rinaldi committed
801
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
802 803 804 805
        if (canSubmit === true) {
            let body = {
                submission_id: this.state.submissionID
            }
Deni Rinaldi's avatar
Deni Rinaldi committed
806
            api.create().submitMasterBudget(body).then(response => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
807
                // // console.log(response);
Deni Rinaldi's avatar
Deni Rinaldi committed
808
                if (response.data) {
Deni Rinaldi's avatar
Deni Rinaldi committed
809
                    if (response.data.status === "success") {
Deni Rinaldi's avatar
Deni Rinaldi committed
810
                        this.getSubmission()
Deni Rinaldi's avatar
Deni Rinaldi committed
811 812 813
                    }
                }
            })
Deni Rinaldi's avatar
Deni Rinaldi committed
814
        } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
815
            this.setState({ alert: true, messageAlert: 'Data Is Not Complete', tipeAlert: 'warning', loading: false }, () => {
idlanirined's avatar
idlanirined committed
816 817
                document.body.style.overflow = 'unset';
            })
Deni Rinaldi's avatar
Deni Rinaldi committed
818
        }
Deni Rinaldi's avatar
Deni Rinaldi committed
819
        // if (array.includes("not-yet" || "draft")) {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
820
        //     // console.log('gagal');
Deni Rinaldi's avatar
Deni Rinaldi committed
821
        // } else {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
822
        //     // console.log('masuk');
Deni Rinaldi's avatar
Deni Rinaldi committed
823 824
        // }

Deni Rinaldi's avatar
Deni Rinaldi committed
825
    }
Deni Rinaldi's avatar
Deni Rinaldi committed
826

d.arizona's avatar
d.arizona committed
827
    validateRevision() {
d.arizona's avatar
d.arizona committed
828
        this.scrollToMyRef()
d.arizona's avatar
d.arizona committed
829 830
        let arrayRevisi = this.state.detailRevisiCheck
        let remarksKosong = 0
Deni Rinaldi's avatar
Deni Rinaldi committed
831
        arrayRevisi.map((item, index) => {
d.arizona's avatar
d.arizona committed
832 833 834 835
            if (item.remarks == "") {
                remarksKosong += 1
            }
        })
Dida Adams Arizona's avatar
Dida Adams Arizona committed
836
        // console.log(arrayRevisi)
d.arizona's avatar
d.arizona committed
837
        if (arrayRevisi.length == 0 || remarksKosong > 0) {
d.arizona's avatar
d.arizona committed
838 839 840 841 842 843
            this.setState({ alert: true, messageAlert: 'Remarks Cannot be Empty', tipeAlert: 'error' })
        } else {
            this.setState({ visibleRevision: false }, () => this.approvalSubmission('revision'))
        }
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
844
    render() {
d.arizona's avatar
d.arizona committed
845 846
        const handleMaxDate = () => {
            let handleDate = Number(moment(this.state.maxDateRevision).format('YYYYMMDD')) - Number(moment(this.state.minDateRevision).format('YYYYMMDD'))
Deni Rinaldi's avatar
Deni Rinaldi committed
847
            return handleDate < 0 ? moment(this.state.minDateRevision).format('YYYY/MM/DD') : moment(this.state.maxDateRevision).format('YYYY/MM/DD')
d.arizona's avatar
d.arizona committed
848
        }
849
        const columns = ["#", "Report Type",
Deni Rinaldi's avatar
Deni Rinaldi committed
850
            {
851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866
                name: "Revision",
                options: {
                    customBodyRender: (val, tableMeta, updateValue) => {
                        var list = [];
                        for (var i = 0; i <= tableMeta.rowData[6]; i++) {
                            list.push(i);
                        }
                        return (
                            <div style={{ display: 'flex' }}>
                                <FormControlLabel
                                    style={{ margin: 0 }}
                                    value={val}
                                    control={
                                        <Select
                                            value={val}
                                            onChange={event => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
867
                                                // // console.log(event.target)
868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883
                                                updateValue(event.target.value)
                                                this.handleChange(event.target.value, tableMeta)
                                            }}
                                            autoWidth
                                        >
                                            {list.map((item, index) =>
                                                <MenuItem key={index} value={item}>{item}</MenuItem>
                                            )}
                                        </Select>
                                    }
                                />
                            </div >
                        );
                    }
                }
            }, {
Deni Rinaldi's avatar
Deni Rinaldi committed
884 885 886 887 888
                name: "Status",
                options: {
                    customBodyRender: (val, tableMeta) => {
                        return (
                            <div style={{ display: 'flex' }}>
889
                                {val === "submitted" || val === "approved" ?
Deni Rinaldi's avatar
Deni Rinaldi committed
890
                                    <span>COMPLETED</span> :
Deni Rinaldi's avatar
Deni Rinaldi committed
891
                                    val === "draft" ?
Deni Rinaldi's avatar
Deni Rinaldi committed
892
                                        <span>DRAFT</span> :
Deni Rinaldi's avatar
Deni Rinaldi committed
893 894 895 896 897 898 899 900 901 902 903 904 905
                                        val === "incomplete" ?
                                            <span>INCOMPLETE</span> :
                                            val === "revision" ?
                                                <span>REVISION</span> :
                                                val === "approval_proccess" ?
                                                    <span>APPROVAL PROCCESS</span> :
                                                    val === "approval_review" ?
                                                        <span>APPROVAL REVIEW</span> :
                                                        val === "not-yet" ?
                                                            <span>OPEN</span> :
                                                            val === "CLOSED" ?
                                                                <span>CLOSED</span> :
                                                                <img src={Images.cross} style={{ width: 31, height: 24 }} />
Deni Rinaldi's avatar
Deni Rinaldi committed
906 907 908 909 910 911 912 913 914 915 916 917 918 919 920
                                }
                            </div >
                        );
                    }
                }
            },
            {
                name: "Action",
                options: {
                    customBodyRender: (val, tableMeta) => {
                        return (
                            <div style={{ display: 'flex' }}>
                                <button
                                    style={{
                                        backgroundColor: 'transparent',
d.arizona's avatar
d.arizona committed
921
                                        cursor: tableMeta.rowData[5] ? 'pointer' : 'default',
Deni Rinaldi's avatar
Deni Rinaldi committed
922 923
                                        borderColor: 'transparent'
                                    }}
Deni Rinaldi's avatar
Deni Rinaldi committed
924
                                    onClick={() =>
d.arizona's avatar
d.arizona committed
925
                                        tableMeta.rowData[5] == true ?
d.arizona's avatar
d.arizona committed
926
                                            this.clickDetail(tableMeta.rowData[1], tableMeta.rowData[4], tableMeta.rowData[2], tableMeta.rowData[3])
d.arizona's avatar
d.arizona committed
927
                                            : null
928
                                    }
Deni Rinaldi's avatar
Deni Rinaldi committed
929
                                >
Deni Rinaldi's avatar
Deni Rinaldi committed
930
                                    {/* {this.state.isApprover == true ?
a.bairuha's avatar
a.bairuha committed
931 932 933
                                        (tableMeta.rowData[5] ? '#5198ea' : 'GrayText') :
                                        (this.state.lastRevision == 0 ? (tableMeta.rowData[5] ? '#5198ea' : 'GrayText') :
                                        (tableMeta.rowData[3] !== 'submitted' ? '#5198ea' : 'GrayText'))} */}
d.arizona's avatar
d.arizona committed
934
                                    <Typography style={{ color: tableMeta.rowData[5] ? '#5198ea' : 'GrayText', fontSize: 12, }}>Detail</Typography>
Deni Rinaldi's avatar
Deni Rinaldi committed
935 936 937 938 939
                                </button>
                            </div >
                        );
                    }
                }
940 941 942 943 944 945
            }, {
                name: "",
                options: { display: false }
            }, {
                name: "",
                options: { display: false }
Deni Rinaldi's avatar
Deni Rinaldi committed
946
            }]
Deni Rinaldi's avatar
Deni Rinaldi committed
947 948 949 950

        const columnsHistory = [
            "Name", "Status", "Remarks", "Revision Item", "Date"
        ]
Deni Rinaldi's avatar
Deni Rinaldi committed
951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966

        const columnRevisi = [
            {
                name: "#",
                options: {
                    customBodyRender: (val, tableMeta, updateValue) => {
                        var list = [];
                        for (var i = 0; i <= tableMeta.rowData[6]; i++) {
                            list.push(i);
                        }
                        return (
                            <div style={{ display: 'flex' }}>
                                <FormControlLabel
                                    style={{ margin: 0 }}
                                    value={val}
                                    control={
Deni Rinaldi's avatar
Deni Rinaldi committed
967 968 969
                                        <Checkbox
                                            checked={this.state.detailRevisiCheck.findIndex((val) => val.report_id == tableMeta.rowData[0]) == -1 ? false : true}
                                            onClick={() => handleCheckRevision(tableMeta.rowData)} />
Deni Rinaldi's avatar
Deni Rinaldi committed
970 971 972 973 974 975
                                    }
                                />
                            </div >
                        );
                    }
                }
d.arizona's avatar
d.arizona committed
976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994
            }, "Report Type",
            {
                name: 'Remarks',
                options: {
                    customBodyRender: (value, tableMeta, updateValue) => {
                        return (
                            <div style={{ textAlign: 'left' }}>
                                <FormControlLabel
                                    style={{ margin: 0 }}
                                    // value={value}
                                    control={
                                        <Input
                                            disableUnderline={true}
                                            style={{ fontSize: 12, textAlign: 'center', borderColor: 'transparent', margin: 0, width: 96, backgroundColor: 'transparent', marginTop: -10 }}
                                            type="text"
                                            placeholder=""
                                            defaultValue={value}
                                            color={"#5198ea"}
                                            onBlur={(event) => {
Dida Adams Arizona's avatar
Dida Adams Arizona committed
995
                                                // // console.log(event.target.value)
d.arizona's avatar
d.arizona committed
996 997
                                                // updateValue(event.target.value)
                                                handleChangeText(event.target.value, tableMeta)
Dida Adams Arizona's avatar
Dida Adams Arizona committed
998
                                                // // console.log(dataTable2)
d.arizona's avatar
d.arizona committed
999 1000
                                            }}
                                        />}
Deni Rinaldi's avatar
Deni Rinaldi committed
1001
                                />
d.arizona's avatar
d.arizona committed
1002 1003 1004 1005
                            </div>
                        )
                    }
                }
d.arizona's avatar
d.arizona committed
1006 1007 1008
            }, {
                name: "",
                options: { display: false }
d.arizona's avatar
d.arizona committed
1009
            }
Deni Rinaldi's avatar
Deni Rinaldi committed
1010 1011
        ]

d.arizona's avatar
d.arizona committed
1012 1013 1014 1015 1016 1017 1018 1019 1020 1021
        const handleChangeText = (value, tableMeta) => {
            let dataTableRevision = this.state.dataTableRevision
            dataTableRevision[tableMeta.rowIndex][tableMeta.columnIndex] = value

            let detailRevisiCheck = this.state.detailRevisiCheck
            let indexId = detailRevisiCheck.findIndex((val) => val.report_id == tableMeta.rowData[0])
            if (indexId !== -1) {
                detailRevisiCheck[indexId].remarks = value
            }

Deni Rinaldi's avatar
Deni Rinaldi committed
1022
            this.setState({ dataTableRevision, detailRevisiCheck })
d.arizona's avatar
d.arizona committed
1023 1024 1025 1026 1027 1028
        }

        const handleCheckRevision = (value) => {
            let detailRevisiCheck = this.state.detailRevisiCheck
            let payload = {
                report_id: value[0],
d.arizona's avatar
d.arizona committed
1029 1030
                remarks: value[2],
                number: value[3]
d.arizona's avatar
d.arizona committed
1031
            }
d.arizona's avatar
d.arizona committed
1032
            let indexDataRevisi = this.state.dataTableRevision.findIndex((val) => val[3] == value[3])
Deni Rinaldi's avatar
Deni Rinaldi committed
1033
            let indexId = detailRevisiCheck.sort((a, b) => a.number - b.number).findIndex((val) => val.number == value[3])
d.arizona's avatar
d.arizona committed
1034
            // console.log(indexId)
d.arizona's avatar
d.arizona committed
1035
            if (indexId == -1) {
Deni Rinaldi's avatar
Deni Rinaldi committed
1036
                this.state.dataTableRevision.map((item, index) => {
d.arizona's avatar
d.arizona committed
1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048
                    if (index > indexDataRevisi) {
                        let indexIds = detailRevisiCheck.findIndex((val) => val.number == item[3])
                        if (indexIds == -1) {
                            let payload2 = {
                                report_id: item[0],
                                remarks: item[2],
                                number: item[3]
                            }
                            detailRevisiCheck.push(payload2)
                        }
                    }
                })
d.arizona's avatar
d.arizona committed
1049 1050
                detailRevisiCheck.push(payload)
            } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
1051

d.arizona's avatar
d.arizona committed
1052
                let x = 0
Deni Rinaldi's avatar
Deni Rinaldi committed
1053
                detailRevisiCheck.sort((a, b) => a.number - b.number).map((item, index) => {
d.arizona's avatar
d.arizona committed
1054 1055 1056 1057 1058
                    if (item.number < value[3]) {
                        x += 1
                    }
                })
                if (x < 1) {
Deni Rinaldi's avatar
Deni Rinaldi committed
1059
                    this.state.dataTableRevision.map((item, index) => {
d.arizona's avatar
d.arizona committed
1060 1061 1062 1063 1064 1065 1066 1067 1068
                        if (index > indexDataRevisi) {
                            let indexIdz = detailRevisiCheck.findIndex((val) => val.number == item[3])
                            if (indexIdz !== -1) {
                                detailRevisiCheck.splice(indexIdz, 1)
                            }
                        }
                    })
                    detailRevisiCheck.splice(indexId, 1)
                }
d.arizona's avatar
d.arizona committed
1069
            }
Deni Rinaldi's avatar
Deni Rinaldi committed
1070
            this.setState({ detailRevisiCheck: detailRevisiCheck.sort((a, b) => a.number - b.number) })
d.arizona's avatar
d.arizona committed
1071
            // console.log(detailRevisiCheck)
d.arizona's avatar
d.arizona committed
1072 1073
        }

Deni Rinaldi's avatar
Deni Rinaldi committed
1074 1075 1076 1077 1078 1079 1080 1081
        const options = {
            filter: false,
            sort: false,
            responsive: "scroll",
            print: false,
            download: false,
            selectableRows: false,
            viewColumns: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
1082
            pagination: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
1083 1084
            search: false
        }
d.arizona's avatar
d.arizona committed
1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097
        const optionsHistory = {
            filter: false,
            sort: false,
            responsive: "scroll",
            print: false,
            download: false,
            selectableRows: false,
            viewColumns: false,
            pagination: true,
            search: false,
            rowsPerPage: 5
        }

Deni Rinaldi's avatar
Deni Rinaldi committed
1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108
        const optionsRevision = {
            filter: false,
            sort: false,
            responsive: "scroll",
            print: false,
            download: false,
            selectableRows: false,
            viewColumns: false,
            pagination: false,
            search: false
        }
Deni Rinaldi's avatar
Deni Rinaldi committed
1109
        const loadingComponent = (
idlanirined's avatar
idlanirined committed
1110
            <div style={{ position: 'fixed', zIndex: 110, top: 0, left: 0, width: '100%', height: '100%', display: 'flex', justifyContent: 'center', alignItems: 'center', background: 'rgba(255,255,255,0.8)' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
1111 1112 1113 1114 1115 1116 1117 1118
                <PropagateLoader
                    // css={override}
                    size={20}
                    color={"#274B80"}
                    loading={this.state.loading}
                />
            </div>
        );
Deni Rinaldi's avatar
Deni Rinaldi committed
1119
        return (
d.arizona's avatar
d.arizona committed
1120
            <div style={{ flex: 1, backgroundColor: '#f8f8f8' }} ref={this.myRef}>
Deni Rinaldi's avatar
Deni Rinaldi committed
1121 1122 1123 1124 1125
                <Snackbar open={this.state.alert} autoHideDuration={6000} onClose={() => this.closeAlert()}>
                    <Alert onClose={() => this.closeAlert()} severity={this.state.tipeAlert}>
                        {this.state.messageAlert}
                    </Alert>
                </Snackbar>
Deni Rinaldi's avatar
Deni Rinaldi committed
1126
                {this.state.loading && loadingComponent}
1127 1128 1129
                {this.state.visibleBudgetTahunan && (
                    <div>
                        <div className={"main-color"} style={{ height: 78, display: 'flex', alignItems: 'center', paddingLeft: 20 }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
1130
                            <Typography style={{ fontSize: '16px', color: 'white' }}>Master Budget & CAT Submission</Typography>
Deni Rinaldi's avatar
Deni Rinaldi committed
1131
                        </div>
1132 1133 1134
                        <div style={{ padding: 20, width: '100%' }}>
                            <Paper style={{ paddingTop: 10 }}>
                                <div style={{ borderBottom: 'solid 1px #c4c4c4' }} >
1135
                                    <Typography style={{ fontSize: '12px', color: '#4b4b4b', margin: 10 }}>Master Budget</Typography>
Deni Rinaldi's avatar
Deni Rinaldi committed
1136
                                </div>
1137 1138
                                <div style={{ padding: 20 }}>
                                    <div>
Deni Rinaldi's avatar
Deni Rinaldi committed
1139 1140
                                        <Autocomplete
                                            {...this.state.listPeriode}
1141
                                            id="periode"
1142
                                            onChange={(event, newInputValue) => this.setState({ periode: newInputValue }, () => {
Deni Rinaldi's avatar
Deni Rinaldi committed
1143 1144 1145 1146 1147 1148
                                                if (this.state.isApprover === true) {
                                                    this.getCompanySubmitted()
                                                } else {
                                                    this.setState({ visibleTableHistory: false })
                                                    this.getRevision()
                                                }
1149
                                            })}
Deni Rinaldi's avatar
Deni Rinaldi committed
1150
                                            disabled={this.state.intent === 'Home' ? true : false}
Deni Rinaldi's avatar
Deni Rinaldi committed
1151 1152
                                            disableClearable
                                            style={{ width: 250 }}
Deni Rinaldi's avatar
Deni Rinaldi committed
1153
                                            renderInput={(params) =>
1154
                                                <TextField {...params} label="Period" margin="normal" style={{ marginTop: 7 }}
Deni Rinaldi's avatar
Deni Rinaldi committed
1155
                                                />}
1156
                                            value={this.state.periode}
Deni Rinaldi's avatar
Deni Rinaldi committed
1157
                                        />
1158 1159
                                    </div>
                                    <div style={{ marginTop: 20 }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
1160 1161 1162
                                        <Autocomplete
                                            {...this.state.listCompany}
                                            id="company"
idlanirined's avatar
idlanirined committed
1163
                                            disabled={this.state.listCompany === null ? true : this.state.intent === 'Home' ? true : false}
1164
                                            onChange={(event, newInputValue) => this.setState({ company: newInputValue }, () => {
Deni Rinaldi's avatar
Deni Rinaldi committed
1165
                                                this.setState({ visibleTableHistory: false })
Deni Rinaldi's avatar
Deni Rinaldi committed
1166
                                                this.getRevision()
1167
                                            })}
Deni Rinaldi's avatar
Deni Rinaldi committed
1168 1169 1170 1171 1172
                                            disableClearable
                                            style={{ width: 250 }}
                                            renderInput={(params) => <TextField {...params} label="Company" margin="normal" style={{ marginTop: 7 }} />}
                                            value={this.state.company}
                                        />
1173 1174
                                    </div>
                                    <div style={{ marginTop: 20 }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
1175
                                        {/* <Autocomplete
1176 1177 1178 1179 1180 1181
                                            {...this.state.listRevision}
                                            id="revision"
                                            onChange={(event, newInputValue) => this.setState({ revision: newInputValue }, () => {
                                                this.getReport()
                                                this.getReportAttachment()
                                            })}
Deni Rinaldi's avatar
Deni Rinaldi committed
1182
                                            disabled={true}
1183 1184 1185 1186
                                            disableClearable
                                            style={{ width: 250 }}
                                            renderInput={(params) => <TextField {...params} label="Revision" margin="normal" style={{ marginTop: 7 }} />}
                                            value={this.state.revision}
Deni Rinaldi's avatar
Deni Rinaldi committed
1187 1188
                                        /> */}
                                        <TextField disabled={true} label="Revision" margin="normal" style={{ marginTop: 7, width: 250 }} value={this.state.lastRevision} />
1189 1190 1191
                                    </div>

                                    <div style={{ marginTop: 20 }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
1192 1193 1194 1195 1196 1197 1198
                                        <MuiThemeProvider theme={getMuiTheme()}>
                                            <MUIDataTable
                                                data={this.state.dataTable}
                                                columns={columns}
                                                options={options}
                                            />
                                        </MuiThemeProvider>
1199 1200 1201 1202 1203
                                    </div>
                                    <div style={{ display: 'flex', marginTop: 20 }}>
                                        <div style={{ width: '50%' }}>
                                            <Typography style={{ fontSize: '16px', color: '#4b4b4b', fontWeight: 'bold' }}>Attachment: </Typography>
                                        </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
1204
                                        {!this.state.isApprover && (this.state.lastStatus === 'SUBMIT' || this.state.lastStatus === 'REVISION') && (
Deni Rinaldi's avatar
Deni Rinaldi committed
1205 1206 1207 1208
                                            <div style={{ width: '50%' }}>
                                                <button
                                                    style={{
                                                        backgroundColor: 'transparent',
Deni Rinaldi's avatar
Deni Rinaldi committed
1209
                                                        cursor: this.state.isSubmit === false ? 'default' : 'pointer',
Deni Rinaldi's avatar
Deni Rinaldi committed
1210 1211 1212
                                                        borderColor: 'transparent',
                                                        outline: 'none'
                                                    }}
Deni Rinaldi's avatar
Deni Rinaldi committed
1213
                                                    onClick={() => this.state.isSubmit === false ? null : this.setState({ visibleUpload: true })}
Deni Rinaldi's avatar
Deni Rinaldi committed
1214
                                                >
Deni Rinaldi's avatar
Deni Rinaldi committed
1215
                                                    <Typography style={{ fontSize: '16px', color: this.state.isSubmit === false ? 'GrayText' : '#5198ea' }}>Upload File</Typography>
Deni Rinaldi's avatar
Deni Rinaldi committed
1216 1217 1218
                                                </button>
                                            </div>
                                        )}
1219 1220 1221
                                    </div>
                                    <div style={{ display: 'flex', marginTop: 10 }}>
                                        <div style={{ width: '50%', paddingLeft: 20 }}>
1222
                                            {this.state.listAttachment.length > 0 ?
Deni Rinaldi's avatar
Deni Rinaldi committed
1223
                                                this.state.listAttachment.map((item, index) => {
1224
                                                    return (
Deni Rinaldi's avatar
Deni Rinaldi committed
1225
                                                        <div style={{ display: 'flex' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
1226
                                                            <Typography style={{ fontSize: '13px', color: '#4b4b4b', width: 25 }}>{index + 1}. </Typography>
Deni Rinaldi's avatar
Deni Rinaldi committed
1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240

                                                            <button
                                                                style={{
                                                                    backgroundColor: 'transparent',
                                                                    cursor: 'pointer',
                                                                    borderColor: 'transparent',
                                                                    outline: 'none',
                                                                    display: 'grid'
                                                                }}
                                                                onClick={() => {
                                                                    this.downloadAttachment(item.attachment_url, item.attachment_name)
                                                                }}
                                                            >
                                                                <div>
Deni Rinaldi's avatar
Deni Rinaldi committed
1241
                                                                    <Typography style={{ fontSize: '13px', color: '#5198ea' }}> {item.attachment_name}</Typography>
Deni Rinaldi's avatar
Deni Rinaldi committed
1242 1243 1244
                                                                </div>
                                                            </button>
                                                        </div>
1245 1246 1247 1248
                                                    )
                                                })
                                                : null
                                            }
1249
                                        </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
1250
                                        {!this.state.isApprover && (this.state.lastStatus === 'SUBMIT' || this.state.lastStatus === 'REVISION') && (
Deni Rinaldi's avatar
Deni Rinaldi committed
1251
                                            <div style={{ width: '50%' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
1252
                                                {
Deni Rinaldi's avatar
Deni Rinaldi committed
1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270
                                                    this.state.listAttachment.length > 0 ?
                                                        this.state.listAttachment.map((item) => {
                                                            return (
                                                                <button
                                                                    style={{
                                                                        backgroundColor: 'transparent',
                                                                        cursor: this.state.isSubmit === false ? 'default' : 'pointer',
                                                                        borderColor: 'transparent',
                                                                        outline: 'none',
                                                                        display: 'grid'
                                                                    }}
                                                                    onClick={() => this.state.isSubmit === false ? null : this.deleteAttachment(item)}
                                                                >
                                                                    <Typography style={{ fontSize: '13px', color: this.state.isSubmit === false ? 'GrayText' : '#ff3939' }}>Delete</Typography>
                                                                </button>
                                                            )
                                                        })
                                                        : null
Deni Rinaldi's avatar
Deni Rinaldi committed
1271 1272 1273
                                                }
                                            </div>
                                        )}
1274
                                    </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
1275
                                    {this.state.checkApprover === true ?
Deni Rinaldi's avatar
Deni Rinaldi committed
1276
                                        this.state.lastStatus === 'WAITING FOR REVIEW' ?
Deni Rinaldi's avatar
Deni Rinaldi committed
1277
                                            <div style={{ width: '100%', padding: '10px 20px', backgroundColor: 'yellow', textAlign: 'center', marginTop: 20 }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
1278 1279
                                                <span>{this.state.lastStatus}</span>
                                            </div> : this.state.lastStatus === 'WAITING FOR YOUR APPROVAL' ?
Deni Rinaldi's avatar
Deni Rinaldi committed
1280
                                                <div style={{ width: '100%', padding: '10px 20px', backgroundColor: 'yellow', textAlign: 'center', marginTop: 20 }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
1281
                                                    <span>{this.state.lastStatus}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
1282 1283 1284
                                                </div> : this.state.lastStatus === 'WAITING FOR APPROVAL' ?
                                                    <div style={{ width: '100%', padding: '10px 20px', backgroundColor: 'yellow', textAlign: 'center', marginTop: 20 }}>
                                                        <span>{`${this.state.lastStatus} - ${this.state.pic}`}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
1285 1286 1287 1288
                                                    </div> : this.state.lastStatus === 'APPROVED' ?
                                                        <div style={{ width: '100%', padding: '10px 20px', backgroundColor: 'yellow', textAlign: 'center', marginTop: 20 }}>
                                                            <span>{`${this.state.lastStatus}`}</span>
                                                        </div> : null
Deni Rinaldi's avatar
Deni Rinaldi committed
1289 1290
                                        :
                                        this.state.lastStatus === 'SUBMITTED' ?
Deni Rinaldi's avatar
Deni Rinaldi committed
1291
                                            <div style={{ width: '100%', padding: '10px 20px', backgroundColor: 'yellow', textAlign: 'center', marginTop: 20 }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
1292 1293 1294
                                                <span>{this.state.lastStatus}</span>
                                            </div> :
                                            this.state.lastStatus === 'WAITING FOR APPROVAL' ?
Deni Rinaldi's avatar
Deni Rinaldi committed
1295
                                                <div style={{ width: '100%', padding: '10px 20px', backgroundColor: 'yellow', textAlign: 'center', marginTop: 20 }}>
d.arizona's avatar
d.arizona committed
1296
                                                    <span>{`${this.state.lastStatus} - ${this.state.pic}`}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
1297 1298
                                                </div> :
                                                this.state.lastStatus === 'REVISION' ?
Deni Rinaldi's avatar
Deni Rinaldi committed
1299
                                                    <div style={{ width: '100%', padding: '10px 20px', backgroundColor: 'yellow', textAlign: 'center', marginTop: 20 }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
1300 1301 1302
                                                        <span>NEED REVISION</span>
                                                    </div> :
                                                    this.state.lastStatus === 'APPROVED' ?
Deni Rinaldi's avatar
Deni Rinaldi committed
1303
                                                        <div style={{ width: '100%', padding: '10px 20px', backgroundColor: 'yellow', textAlign: 'center', marginTop: 20 }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
1304 1305 1306
                                                            <span>APPROVED</span>
                                                        </div> : null
                                    }
Deni Rinaldi's avatar
Deni Rinaldi committed
1307 1308 1309 1310 1311 1312
                                    {this.state.visibleTableHistory && (
                                        <div style={{ marginTop: 20 }}>
                                            <MuiThemeProvider theme={getMuiTheme()}>
                                                <MUIDataTable
                                                    data={this.state.dataTableHistory}
                                                    columns={columnsHistory}
d.arizona's avatar
d.arizona committed
1313
                                                    options={optionsHistory}
Deni Rinaldi's avatar
Deni Rinaldi committed
1314 1315 1316 1317
                                                />
                                            </MuiThemeProvider>
                                        </div>
                                    )}
Deni Rinaldi's avatar
Deni Rinaldi committed
1318
                                </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
1319
                                {this.state.isAdmin && this.state.lastStatus == 'APPROVED' ?
Dida Adams Arizona's avatar
Dida Adams Arizona committed
1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351
                                    <div className="grid grid-2x" style={{ borderTop: 'solid 1px #c4c4c4', padding: 10, backgroundColor: '#f5f5f5', width: '100%', }}>
                                        <div className="col-1" />
                                        <div className="col-2" style={{ display: 'flex', justifyContent: 'flex-end', maxWidth: '100%' }}>
                                            <button
                                                style={{
                                                    backgroundColor: 'transparent',
                                                    cursor: 'pointer',
                                                    borderColor: 'transparent',
                                                    outline: 'none',
                                                    marginRight: 20
                                                }}
                                                onClick={() => this.setState({ visibleRevision: true })}
                                            >
                                                <div style={{ backgroundColor: '#019ce5', width: 105, height: 25, borderRadius: 3, justifyContent: 'center', display: 'flex', alignItems: 'center' }}>
                                                    <Typography style={{ fontSize: '11px', color: '#fff', textAlign: 'center' }}>Revision</Typography>
                                                </div>
                                            </button>
                                            {/* <button
                                                style={{
                                                    backgroundColor: 'transparent',
                                                    cursor: 'pointer',
                                                    borderColor: 'transparent',
                                                    outline: 'none',
                                                }}
                                                onClick={() => this.approvalSubmission('approve')}
                                            >
                                                <div style={{ backgroundColor: '#354960', width: 105, height: 25, borderRadius: 3, justifyContent: 'center', display: 'flex', alignItems: 'center' }}>
                                                    <Typography style={{ fontSize: '11px', color: '#fff', textAlign: 'center' }}>Approve</Typography>
                                                </div>
                                            </button> */}
                                        </div>
                                    </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
1352
                                    :
Deni Rinaldi's avatar
Deni Rinaldi committed
1353 1354
                                    this.state.checkApprover === true ?
                                        this.state.lastStatus === 'WAITING FOR REVIEW' ?
Deni Rinaldi's avatar
Deni Rinaldi committed
1355 1356 1357 1358 1359 1360 1361 1362
                                            <div style={{ borderTop: 'solid 1px #c4c4c4', padding: 10, backgroundColor: '#f5f5f5', width: '100%', display: 'flex', justifyContent: 'flex-end' }} >
                                                <button
                                                    style={{
                                                        backgroundColor: 'transparent',
                                                        cursor: 'pointer',
                                                        borderColor: 'transparent',
                                                        outline: 'none',
                                                    }}
Deni Rinaldi's avatar
Deni Rinaldi committed
1363 1364 1365
                                                    onClick={() =>
                                                        this.approvalSubmission('review')
                                                    }
Deni Rinaldi's avatar
Deni Rinaldi committed
1366
                                                >
Deni Rinaldi's avatar
Deni Rinaldi committed
1367 1368
                                                    <div style={{ backgroundColor: '#354960', width: 105, height: 25, borderRadius: 3, justifyContent: 'center', display: 'flex', alignItems: 'center' }}>
                                                        <Typography style={{ fontSize: '11px', color: '#fff', textAlign: 'center' }}>Review</Typography>
Deni Rinaldi's avatar
Deni Rinaldi committed
1369 1370
                                                    </div>
                                                </button>
Deni Rinaldi's avatar
Deni Rinaldi committed
1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436
                                            </div> : (this.state.lastStatus === 'WAITING FOR YOUR APPROVAL' && this.state.btnApprove) ?
                                                <div className="grid grid-2x" style={{ borderTop: 'solid 1px #c4c4c4', padding: 10, backgroundColor: '#f5f5f5', width: '100%', }}>
                                                    <div className="col-1" />
                                                    <div className="col-2" style={{ display: 'flex', justifyContent: 'flex-end', maxWidth: '100%' }}>
                                                        <button
                                                            style={{
                                                                backgroundColor: 'transparent',
                                                                cursor: 'pointer',
                                                                borderColor: 'transparent',
                                                                outline: 'none',
                                                                marginRight: 20
                                                            }}
                                                            onClick={() => this.setState({ visibleRevision: true })}
                                                        >
                                                            <div style={{ backgroundColor: '#019ce5', width: 105, height: 25, borderRadius: 3, justifyContent: 'center', display: 'flex', alignItems: 'center' }}>
                                                                <Typography style={{ fontSize: '11px', color: '#fff', textAlign: 'center' }}>Revision</Typography>
                                                            </div>
                                                        </button>
                                                        <button
                                                            style={{
                                                                backgroundColor: 'transparent',
                                                                cursor: 'pointer',
                                                                borderColor: 'transparent',
                                                                outline: 'none',
                                                            }}
                                                            onClick={() => this.approvalSubmission('approve')}
                                                        >
                                                            <div style={{ backgroundColor: '#354960', width: 105, height: 25, borderRadius: 3, justifyContent: 'center', display: 'flex', alignItems: 'center' }}>
                                                                <Typography style={{ fontSize: '11px', color: '#fff', textAlign: 'center' }}>Approve</Typography>
                                                            </div>
                                                        </button>
                                                    </div>
                                                </div> : null
                                        :
                                        (this.state.lastStatus === 'SUBMIT' || this.state.lastStatus === 'REVISION') && this.state.isSubmit === true ?
                                            <div style={{ borderTop: 'solid 1px #c4c4c4', padding: 10, backgroundColor: '#f5f5f5', width: '100%', display: 'flex', justifyContent: 'flex-end' }} >
                                                <button
                                                    style={{
                                                        backgroundColor: 'transparent',
                                                        cursor: 'pointer',
                                                        borderColor: 'transparent',
                                                        outline: 'none',
                                                    }}
                                                    onClick={() => this.validate()}
                                                >
                                                    <div style={{ backgroundColor: '#354960', width: 105, height: 25, borderRadius: 3, justifyContent: 'center', display: 'flex', alignItems: 'center' }}>
                                                        <Typography style={{ fontSize: '11px', color: '#fff', textAlign: 'center' }}>Submit</Typography>
                                                    </div>
                                                </button>
                                            </div> :
                                            this.state.lastStatus === 'SUBMITTED' && this.state.submitter ?
                                                <div style={{ borderTop: 'solid 1px #c4c4c4', padding: 10, backgroundColor: '#f5f5f5', width: '100%', display: 'flex', justifyContent: 'flex-end' }} >
                                                    <button
                                                        style={{
                                                            backgroundColor: 'transparent',
                                                            cursor: 'pointer',
                                                            borderColor: 'transparent',
                                                            outline: 'none',
                                                        }}
                                                        onClick={() => this.approvalSubmission('cancel')}
                                                    >
                                                        <div style={{ backgroundColor: 'gray', width: 105, height: 25, borderRadius: 3, justifyContent: 'center', display: 'flex', alignItems: 'center' }}>
                                                            <Typography style={{ fontSize: '11px', color: '#fff', textAlign: 'center' }}>Cancel</Typography>
                                                        </div>
                                                    </button>
                                                </div> : null
Deni Rinaldi's avatar
Deni Rinaldi committed
1437
                                }
1438 1439
                            </Paper>

Deni Rinaldi's avatar
Deni Rinaldi committed
1440
                        </div>
1441
                    </div>
idlanirined's avatar
idlanirined committed
1442 1443
                )
                }
Deni Rinaldi's avatar
Deni Rinaldi committed
1444

idlanirined's avatar
idlanirined committed
1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462
                {
                    this.state.visibleUpload && (
                        <div className="test app-popup-show">
                            <div className="popup-content background-white border-radius" style={{ borderRadius: 8 }}>
                                <div className="popup-panel grid grid-2x main-color" style={{ height: 64, borderTopRightRadius: 8, borderTopLeftRadius: 8 }}>
                                    <div className="col-1" style={{ maxWidth: "inherit", display: 'flex', alignItems: 'center' }}>
                                        <div className="popup-title">
                                            <span style={{ color: '#fff', fontSize: 16, fontWeight: 'bold' }}>Upload File</span>
                                        </div>
                                    </div>
                                    <div className="col-2 content-right" style={{ maxWidth: "inherit", alignSelf: 'center' }}>
                                        <button
                                            type="button"
                                            className="btn btn-circle btn-white"
                                            onClick={() => this.setState({ visibleUpload: false })}
                                        >
                                            <img src={Images.close} />
                                        </button>
1463 1464
                                    </div>
                                </div>
idlanirined's avatar
idlanirined committed
1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475
                                <UploadFile
                                    type={this.state.uploadStatus}
                                    percentage={this.state.percentage}
                                    result={this.state.result}
                                    acceptedFiles={["xlsx"]}
                                    onHandle={(dt) => {
                                        this.fileHandler(dt)
                                        this.setState({ uploadStatus: 'idle', percentage: '0' })
                                    }}
                                    onUpload={() => this.uploadAttachment(this.state.formData)}
                                />
1476 1477
                            </div>
                        </div>
idlanirined's avatar
idlanirined committed
1478 1479
                    )
                }
1480

idlanirined's avatar
idlanirined committed
1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606
                {
                    this.state.visibleBS && (
                        <BalanceSheet
                            open={this.props.open}
                            report_id={this.state.report_id}
                            height={this.props.height}
                            width={this.props.width}
                            company={this.state.company}
                            revision={this.state.revisionTable}
                            periode={this.state.periode.periode}
                            submissionID={this.state.submissionID}
                            saveToMasterBudget={this.saveToMasterBudget.bind(this)}
                            onClickClose={() => this.setState({ visibleBS: false, visibleBudgetTahunan: true })}
                            getReport={this.getSubmission.bind(this)}
                            isApprover={this.state.isApprover}
                            lastStatus={this.state.lastStatus}
                            prevRevision={this.state.isSubmit ? this.state.prevRevision : true}
                            status={this.state.status}
                        />
                    )
                }
                {
                    this.state.visiblePL && (
                        <ProfitLoss
                            open={this.props.open}
                            report_id={this.state.report_id}
                            height={this.props.height}
                            width={this.props.width}
                            company={this.state.company}
                            revision={this.state.revisionTable}
                            periode={this.state.periode.periode}
                            submissionID={this.state.submissionID}
                            saveToMasterBudget={this.saveToMasterBudget.bind(this)}
                            onClickClose={() => this.setState({ visiblePL: false, visibleBudgetTahunan: true })}
                            getReport={this.getSubmission.bind(this)}
                            status={this.state.status}
                            isApprover={this.state.isApprover}
                            lastStatus={this.state.lastStatus}
                            prevRevision={this.state.isSubmit ? this.state.prevRevision : true}
                        />
                    )
                }
                {
                    this.state.visibleTP && (
                        <TaxPlanning
                            open={this.props.open}
                            report_id={this.state.report_id}
                            height={this.props.height}
                            width={this.props.width}
                            company={this.state.company}
                            revision={this.state.revisionTable}
                            periode={this.state.periode.periode}
                            submissionID={this.state.submissionID}
                            saveToMasterBudget={this.saveToMasterBudget.bind(this)}
                            onClickClose={() => this.setState({ visibleTP: false, visibleBudgetTahunan: true })}
                            getReport={this.getSubmission.bind(this)}
                            status={this.state.status}
                            isApprover={this.state.isApprover}
                            lastStatus={this.state.lastStatus}
                            prevRevision={this.state.isSubmit ? this.state.prevRevision : true}
                        />
                    )
                }
                {
                    this.state.visibleFAM && (
                        <FixedAssetsMovement
                            open={this.props.open}
                            report_id={this.state.report_id}
                            height={this.props.height}
                            width={this.props.width}
                            company={this.state.company}
                            revision={this.state.revisionTable}
                            periode={this.state.periode.periode}
                            submissionID={this.state.submissionID}
                            saveToMasterBudget={this.saveToMasterBudget.bind(this)}
                            onClickClose={() => this.setState({ visibleFAM: false, visibleBudgetTahunan: true })}
                            getReport={this.getSubmission.bind(this)}
                            status={this.state.status}
                            isApprover={this.state.isApprover}
                            lastStatus={this.state.lastStatus}
                            prevRevision={this.state.isSubmit ? this.state.prevRevision : true}
                        />
                    )
                }
                {
                    this.state.visibleCAT && (
                        <CorporateAnnualTarget
                            open={this.props.open}
                            report_id={this.state.report_id}
                            height={this.props.height}
                            width={this.props.width}
                            company={this.state.company}
                            revision={this.state.revisionTable}
                            periode={this.state.periode.periode}
                            submissionID={this.state.submissionID}
                            saveToMasterBudget={this.saveToMasterBudget.bind(this)}
                            onClickClose={() => this.setState({ visibleCAT: false, visibleBudgetTahunan: true })}
                            getReport={this.getSubmission.bind(this)}
                            isApprover={this.state.isApprover}
                            status={this.state.status}
                            lastStatus={this.state.lastStatus}
                            prevRevision={this.state.isSubmit ? this.state.prevRevision : true}
                        />
                    )
                }
                {
                    this.state.visibleCF && (
                        <CashFlow
                            open={this.props.open}
                            report_id={this.state.report_id}
                            height={this.props.height}
                            width={this.props.width}
                            company={this.state.company}
                            revision={this.state.revisionTable}
                            periode={this.state.periode.periode}
                            submissionID={this.state.submissionID}
                            saveToMasterBudget={this.saveToMasterBudget.bind(this)}
                            onClickClose={() => this.setState({ visibleCF: false, visibleBudgetTahunan: true })}
                            getReport={this.getSubmission.bind(this)}
                            isApprover={this.state.isApprover}
                            status={this.state.status}
                            lastStatus={this.state.lastStatus}
                            prevRevision={this.state.isSubmit ? this.state.prevRevision : true}
                        />
                    )
                }
Deni Rinaldi's avatar
Deni Rinaldi committed
1607

idlanirined's avatar
idlanirined committed
1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625
                {
                    this.state.visibleRevision && (
                        <div className="test app-popup-show">
                            <div className="popup-content background-white border-radius" style={{ borderRadius: 8 }}>
                                <div className="popup-panel grid grid-2x main-color" style={{ height: 64, borderTopRightRadius: 8, borderTopLeftRadius: 8 }}>
                                    <div className="col-1" style={{ maxWidth: "inherit", display: 'flex', alignItems: 'center' }}>
                                        <div className="popup-title">
                                            <span style={{ color: '#fff', fontSize: 16, fontWeight: 'bold' }}>Revision</span>
                                        </div>
                                    </div>
                                    <div className="col-2 content-right" style={{ maxWidth: "inherit", alignSelf: 'center' }}>
                                        <button
                                            type="button"
                                            className="btn btn-circle btn-white"
                                            onClick={() => this.setState({ visibleRevision: false })}
                                        >
                                            <img src={Images.close} />
                                        </button>
Deni Rinaldi's avatar
Deni Rinaldi committed
1626 1627
                                    </div>
                                </div>
idlanirined's avatar
idlanirined committed
1628 1629 1630 1631 1632 1633 1634 1635
                                <div className="border-bottom" style={{ padding: 20 }}>
                                    <span>You ask your subsidiary to make a revision</span>
                                    <div style={{ marginTop: 20 }}>
                                        <MuiThemeProvider theme={getMuiTheme()}>
                                            <MUIDataTable
                                                data={this.state.dataTableRevision}
                                                columns={columnRevisi}
                                                options={optionsRevision}
Deni Rinaldi's avatar
Deni Rinaldi committed
1636
                                            />
idlanirined's avatar
idlanirined committed
1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663
                                        </MuiThemeProvider>
                                    </div>
                                    <div style={{ marginTop: 20 }}>
                                        <span>Timing duration you give for revision:</span>
                                        <div style={{ display: 'flex', justifyContent: 'space-between', marginTop: 20 }}>
                                            <div>
                                                <DatePicker
                                                    margin="normal"
                                                    id="startDate"
                                                    label="Valid From"
                                                    format="dd-MM-yyyy"
                                                    onChange={(e) => this.setState({ minDateRevision: moment(e).format('YYYY/MM/DD') }, () => this.setState({ maxDateRevision: handleMaxDate() }))}
                                                    value={moment(this.state.minDateRevision).format('YYYY/MM/DD')}
                                                    KeyboardButtonProps={{
                                                        'aria-label': 'change date',
                                                    }}
                                                    inputProps={{
                                                        style: {
                                                            fontSize: 11
                                                        }
                                                    }}
                                                    InputLabelProps={{
                                                        style: {
                                                            fontSize: 11,
                                                            color: '#7e8085'
                                                        }
                                                    }}
Deni Rinaldi's avatar
Deni Rinaldi committed
1664

idlanirined's avatar
idlanirined committed
1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695
                                                    style={{ padding: 0, margin: 0, width: '100%' }}
                                                />
                                            </div>
                                            <span style={{ alignSelf: 'center' }}>Until</span>
                                            <div>
                                                <DatePicker
                                                    margin="normal"
                                                    id="startDate"
                                                    label="Valid To"
                                                    format="dd-MM-yyyy"
                                                    onChange={(e) => this.setState({ maxDateRevision: moment(e).format('YYYY/MM/DD') })}
                                                    minDate={moment(this.state.minDateRevision).format('YYYY/MM/DD')}
                                                    value={moment(this.state.maxDateRevision).format('YYYY/MM/DD')}
                                                    KeyboardButtonProps={{
                                                        'aria-label': 'change date',
                                                    }}
                                                    inputProps={{
                                                        style: {
                                                            fontSize: 11
                                                        }
                                                    }}
                                                    InputLabelProps={{
                                                        style: {
                                                            fontSize: 11,
                                                            color: '#7e8085'
                                                        }
                                                    }}

                                                    style={{ padding: 0, margin: 0, width: '100%' }}
                                                />
                                            </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
1696 1697 1698
                                        </div>
                                    </div>
                                </div>
idlanirined's avatar
idlanirined committed
1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719
                                <div className="border-top grid grid-2x" style={{ height: 56, backgroundColor: '#f5f5f5', paddingLeft: 20, paddingRight: 20 }}>
                                    <div className="column-1" style={{ alignSelf: 'center' }}>
                                        <button
                                            type="button"
                                            onClick={() => this.setState({ visibleRevision: false })}
                                        >
                                            <div style={{ width: 102, height: 30, border: 'solid 1px #354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center' }}>
                                                <span style={{ color: '#354960', fontSize: 11 }}>Cancel</span>
                                            </div>
                                        </button>
                                    </div>
                                    <div className="column-2" style={{ display: 'flex', justifyContent: 'flex-end', alignItems: 'center' }}>
                                        <button
                                            type="button"
                                            onClick={() => this.validateRevision()}
                                        >
                                            <div style={{ width: 102, height: 30, backgroundColor: '#354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center' }}>
                                                <span style={{ color: '#fff', fontSize: 11 }}>Revision</span>
                                            </div>
                                        </button>
                                    </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
1720 1721 1722
                                </div>
                            </div>
                        </div>
idlanirined's avatar
idlanirined committed
1723 1724
                    )
                }
Deni Rinaldi's avatar
Deni Rinaldi committed
1725 1726 1727 1728
            </div >
        );
    }
}