import React, { useContext, useState } from "react"; import { Button, Divider, Form, Input, List, message, Modal, Space, Table, Tag, } from "antd"; import { observer } from "mobx-react-lite"; import { ExclamationCircleOutlined } from "@ant-design/icons"; import { useHistory } from "react-router-dom"; import { useStore } from "../utils/useStore"; import { LINKS } from "../routes/app"; import { TopupsaldoModal } from "./TopupsaldoModal"; import { ModalLoaderContext } from "../utils/modal"; export const SupplierComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); const history = useHistory(); const [idData, setIdData] = useState(""); const modalLoader = useContext(ModalLoaderContext); const handleEditButton = (data) => { console.log(data, "isi data"); form.setFieldsValue({ name: data.name, code: data.code, status: data.status, }); store.supplier.visibleModalSupplier = true; setIdData(data.id); }; const handleTopup = (data) => { console.log(data, "isi data"); form.setFieldsValue({ code: data.code, }); store.supplier.visibleModalTransaction = true; store.supplier.code = data.code; }; const changeStatus = async (id, isActive) => { const status = isActive ? "inactive" : "active"; const status2 = isActive ? "Inactivating" : "Activating"; try { modalLoader.setLoading(true); const response = await store.supplier.changeStatus(id, status); modalLoader.setLoading(false); response?.body?.statusCode === 201 ? message.success(`Success ${status2} Supplier`) : message.error(`Failed ${status2} Supplier`); } catch (err) { modalLoader.setLoading(false); console.log("error", err); message.error(`Failed ${status2} Supplier`); } }; const columns = [ { title: "Name", dataIndex: "name", key: "name", }, { title: "Kode", dataIndex: "code", key: "code", width: "5%", }, { title: "Saldo di Supplier", dataIndex: ["coa", "amount"], key: ["coa", "amount"], width: "20%", render: (text, record) => new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(text), }, { title: "Saldo di System", dataIndex: ["coa_undistribute", "amount"], key: ["coa_undistribute", "amount"], width: "20%", render: (text, record) => new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(text), }, { title: "Status", dataIndex: "status", key: "status", width: "5%", render: (text, record) => ( {record?.status === true ? " ACTIVE" : "INACTIVE"} ), }, { title: "Tindakan", key: "action", width: "20%", render: (text, record) => ( ), }, ]; const deleteData = async (id) => { try { console.log(id); modalLoader.setLoading(true); await store.supplier.delete(id); modalLoader.setLoading(false); message.success("Data Berhasil Dihapus"); history.push(LINKS.PRODUCT); } catch (err) { modalLoader.setLoading(false); console.log("error", err); message.error("Gagal menghapus"); } }; const handleDelete = (id) => { Modal.confirm({ title: "Are you sure delete this record?", icon: , okText: "Yes", okType: "primary", cancelText: "Batal", onOk() { return deleteData(id); }, onCancel() { console.log("Batal"); }, }); }; const handleCancel = () => { setIdData(""); store.supplier.visibleModalSupplier = false; }; const handleSubmit = async (data) => { console.log(data, "isi data2"); if (idData !== "") { try { modalLoader.setLoading(true); const response = await store.supplier.update(idData, data); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success( response?.body?.message || "Berhasil Ubah Data Supplier" ) : message.error( response?.body?.message || "Gagal Ubah Data Supplier" ); } catch (e) { modalLoader.setLoading(false); message.error(e.response?.body?.message || "Gagal Ubah Data Supplie"); } modalLoader.setLoading(false); store.supplier.visibleModalSupplier = false; setIdData(""); form.resetFields(); } else { try { const response = await store.supplier.create(data); if (response.status === 201) { message.success( response?.body?.message || "Berhasil Tambah Supplier" ); await store.supplier.getData(); } else { message.error(response?.body?.error || "Gagal Tambah Supplier", 3); } } catch (e) { console.log("testingan"); console.log(e.response, "testingan"); console.log(e.result, "testingan1"); if (e.response?.body?.error) { message.error(e.response.body.error); modalLoader.setLoading(false); store.supplier.visibleModalSupplier = false; return; } console.log(e, "apa errornya"); message.error("Gagal Tambah Supplier"); } modalLoader.setLoading(false); store.supplier.visibleModalSupplier = false; setIdData(""); form.resetFields(); await store.supplier.getData(); } }; return (
{store.ui.mediaQuery.isDesktop && ( { let pageNumber = page.current; store.supplier.pageSize = page.pageSize; store.supplier.page = pageNumber - 1; modalLoader.setLoading(true); await store.supplier.getData(); modalLoader.setLoading(false); }} /> )} {store.ui.mediaQuery.isMobile && ( { store.supplier.pageSize = pageSize; store.supplier.page = page - 1; modalLoader.setLoading(true); await store.supplier.getData(); modalLoader.setLoading(false); }, pageSize: store.supplier.pageSize, total: store.supplier.total_data, current: store.supplier.page + 1, style: { marginBottom: "1rem", marginRight: "1rem" }, }} dataSource={store.supplier.data} style={{ padding: 0 }} renderItem={(item) => { return (

Name : {item.name}
Saldo Supplier : {item.coa.amount}
Saldo System : {item.coa_undistribute.amount}
{item?.status === true ? " ACTIVE" : "INACTIVE"}

} /> ); }} /> )} { form.resetFields(); handleCancel(); }} onOk={() => { form .validateFields() .then((values) => { console.log(values, "isi form"); handleSubmit(values); form.resetFields(); }) .catch((info) => { console.error("Validate Failed:", info); }); }} >
{!idData && ( )}
); });