Untitled

mail@pastecode.io avatar
unknown
javascript
2 years ago
17 kB
2
Indexable
Never
module.exports = async function(body, args, arg, client, pushname, from, m, downloadMediaMessage, SessionName) {
    // write your code reply here hereeee, Don't delete above. example :
    const fetch = require('node-fetch')
    var urlAPIOrder = 'https://wajibpajakindo.bamahadigital.com/wpibotpajak.php'
    const flatFileDb = require("flat-file-db")
    const db = flatFileDb.sync(`database-order-${SessionName}.db`);
    // jangan hapus @s.whatsapp.net nya.
    // edit nomor nya saja.
    var no_admin = '6282234270717@s.whatsapp.net';
    var message_already_ses = 'Mohon maaf selesaikan order sebelumnya terlebih dahulu.'
    // answered
    client.p_kategori = client.p_kategori ? client.p_kategori : {}
    client.p_detail_layanan = client.p_detail_layanan ? client.p_detail_layanan : {}
    client.p_nama_pemesan = client.p_nama_pemesan ? client.p_nama_pemesan : {}
    client.p_rencana_diskusi = client.p_rencana_diskusi ? client.p_rencana_diskusi : {}
    client.p_detail_diskusi = client.p_detail_diskusi ? client.p_detail_diskusi : {}
    client.p_no_wa = client.p_no_wa ? client.p_no_wa : {}

    // create a new session array
    client.kategori = client.kategori ? client.kategori : {}
    client.detail_layanan = client.detail_layanan ? client.detail_layanan : {}
    client.nama_pemesan = client.nama_pemesan ? client.nama_pemesan : {}
    client.rencana_diskusi = client.rencana_diskusi ? client.rencana_diskusi : {}
    client.detail_diskusi = client.detail_diskusi ? client.detail_diskusi : {}
    client.no_wa = client.no_wa ? client.no_wa : {}
    if (from.endsWith('@g.us')) return;

    try {
        if (from in client.kategori) {
            await rid_reply(`Wah tepat sekali pilihannya Bapak/Ibu`)
            // atau bisa buat lagi 
            // await rid_reply('text nya disini');
            // kirim lagi pertanyaan selanjutnya ke sub kategori
            // isi rowId dengan nama sub kategori nya ya
            if (body == 'npwp') {
                const buttons = [
                    {buttonId: '/order', buttonText: {displayText: 'Layanan Lainnya'}, type: 1},
                    {buttonId: 'Layanan NPWP', buttonText: {displayText: 'Iya, Gunakan Layanan'}, type: 1},
                  ]
                  const buttonMessage = {
                      text: "Wajib pajak dapat berkonsultasi seputar Hak dan Kewajiban Perpajakan sebelum mengajukan NPWP.\n\nBagi wajib pajak yang belum memiliki NPWP dan ingin mengajukan NPWP dapat menggunakan layanan ini.",
                      footer: 'bamahadigital',
                      buttons: buttons,
                      headerType: 1
                  }
                client.detail_layanan[from] = [
                    await client.sendMessage(from, buttonMessage)
                ]
            } else if (body == 'pkp') {
                const buttons = [
                    {buttonId: '/order', buttonText: {displayText: 'Layanan Lainnya'}, type: 1},
                    {buttonId: 'Layanan PKP', buttonText: {displayText: 'Iya, Gunakan Layanan'}, type: 1},
                  ]
                  const buttonMessage = {
                      text: "Wajib Pajak yang peredaran usahanya telah mencapai 4,8M dalam 1 tahun, paling lambat 1 bulan setelahnya wajib mengukuhkan diri sebagai Pengusaha Kena Pajak (PKP)\n\nKami siap membantu Anda untuk pendampingan pengajuan PKP tersebut.",
                      footer: 'bamahadigital',
                      buttons: buttons,
                      headerType: 1
                  }
                client.detail_layanan[from] = [
                    await client.sendMessage(from, buttonMessage)
                ]
            }else if (body == 'Pajak Pribadi') {
                const buttons = [
                    {buttonId: '/order', buttonText: {displayText: 'Layanan Lainnya'}, type: 1},
                    {buttonId: 'Layanan Pajak Pribadi', buttonText: {displayText: 'Iya, Gunakan Layanan'}, type: 1},
                  ]
                  const buttonMessage = {
                      text: "Setiap Warga Negara Indonesia yang sudah memiliki NPWP memiliki Hak & Kewajiban perpajakan yang harus dipenuhi. Hak & Kewajiban tersebut harus dilaksakan oleh semua Wajib Pajak, salah satunya itu Wajib Pajak Orang Pribadi.\n\nKami akan membantu Anda untuk memenuhi Hak & Kewajiban Anda sebagai Wajib Pajak Orang Pribadi, antara lain :\n\n- Konsultasi dan Pendampingan Pengajuan Pengukuhan PKP (Pengusaha Kena Pajak);\n- Konsultasi Pelaporan Pajak Bulanan (PPh Pasal 21, PPh Pasal 23, PPh Pasal 25, PPh Pasal 4 Ayat (2), PPh Pasal 26, dan PPN);\n- Konsultasi Pelaporan Pajak Tahunan (SPT Tahunan 1770, 1770S, dan 1770SS;\nKonsultasi Penyelenggaran Pembukuan bagi Wajib Pajak yang telah memiliki Omset lebih dari 4,8 M dalam 1 tahun;\n- Konsultasi dan Pendampingan Pengajuan Perubahan Data Diri Wajib Pajak;\nKonsultasi dan Pendampingan Pengajuan Non-Efektif (NE)\n- Konsultasi dan Pendampingan Penghasupan NPWP.",
                      footer: 'bamahadigital',
                      buttons: buttons,
                      headerType: 1
                  }
                client.detail_layanan[from] = [
                    await client.sendMessage(from, buttonMessage)
                ]
            }else if (body == 'Pajak Badan') {
                const buttons = [
                    {buttonId: '/order', buttonText: {displayText: 'Layanan Lainnya'}, type: 1},
                    {buttonId: 'Layanan Pajak Badan', buttonText: {displayText: 'Iya, Gunakan Layanan'}, type: 1},
                  ]
                  const buttonMessage = {
                      text: "Setiap perusahaan yang berbadan hukum (PT, CV, Firma, Koperasi, Yayasan, dll) yang sudah memiliki NPWP memiliki Hak dan Kewajiban Perpajakan yang harus dipenuhi. Hak dan kewajiban tersebut harus dilaksanakan oleh semua wajib pajak, salah satunya itu Wajib Pajak Badan.\n\nKami akan membantu Anda untuk memenuhi hak dan kewajiban Anda sebagai Wajib Pajak Badan, antara lain :\n\n- Konsultasi dan Pendampingan Pengajuan Pengukuhan PKP (Pengusaha Kena Pajak);n- Konsultasi Pelaporan Pajak Bulanan (PPh Pasal 21, PPh Pasal 22, PPh Pasal 23, PPh Pasal 24, PPh Pasal 25, PPh Pasal 4 Ayat (2), PPh Pasal 26, dan PPN);\n- Konsultasi Pelaporan Pajak Tahunan (SPT Tahunan 1771);\n- Konsultasi Penyelenggaraan Pembukuan;\n- Konsultasi dan Pendampingan Pengajuan Perubahan Data Diri Wajib Pajak;\n- Konsultasi dan Pendampingan Pengajuan Non-Efektif (NE);\n- Konsultasi dan Pendampingan Penghapusan NPWP.",
                      footer: 'bamahadigital',
                      buttons: buttons,
                      headerType: 1
                  }
                client.detail_layanan[from] = [
                    await client.sendMessage(from, buttonMessage)
                ]
            }else if (body == 'Sengketa Pajak') {
                const buttons = [
                    {buttonId: '/order', buttonText: {displayText: 'Layanan Lainnya'}, type: 1},
                    {buttonId: 'Layanan Sengketa Pajak', buttonText: {displayText: 'Iya, Gunakan Layanan'}, type: 1},
                  ]
                  const buttonMessage = {
                      text: "Adanya Penerapan _Self Assessment_ System dalam Sistem Pemungutan Pajak di Indonesia, dapat menyebabkan perbedaan penafsiran peraturan antara Wajib Pajak dengan Fiskus yang biasa disebut dengan Sengketa Pajak (Tax Dispute).\n\nSengketa Pajak tidak hanya terjadi ditingkat Kantor Pelayanan Pajak (KPP), akan tetapi bisa ke tingkat Pengadilan Pajak\n\nUntuk itu kami hadir untuk membantu Wajib Pajak dalam menghadapi Sengketa Pajak, antara lain :\n\n- Penyelesaian SP2DK\n- Pengajuan Keberatan\n- Pengajuan Banding\n- Pengajuan Gugatan, dan\n- Pendampingan sebagai Kuasa Hukum Pengadilan Pajak",
                      footer: 'bamahadigital',
                      buttons: buttons,
                      headerType: 1
                  }
                client.detail_layanan[from] = [
                    await client.sendMessage(from, buttonMessage)
                ]
            }else if (body == 'Pemeriksaan Pajak') {
                const buttons = [
                    {buttonId: '/order', buttonText: {displayText: 'Layanan Lainnya'}, type: 1},
                    {buttonId: 'Layanan Pemeriksaan Pajak', buttonText: {displayText: 'Iya, Gunakan Layanan'}, type: 1},
                  ]
                  const buttonMessage = {
                      text: "Fiskus dalam menguji kepatuhan Wajib Pajak akan melakukan suatu tindakan yang disebut Pemeriksaan Pajak. Pemeriksaan Pajak ini meliputi semua aspek kewajiban perpajakan yang ada pada Wajib Pajak _(All Taxes)_.\n\nUntuk itu kami hadir untuk membantu Wajib Pajak dalam menghadapi Pemeriksaan Pajak yaitu Pendampingan Pemeriksaan Pajak",
                      footer: 'bamahadigital',
                      buttons: buttons,
                      headerType: 1
                  }
                client.detail_layanan[from] = [
                    await client.sendMessage(from, buttonMessage)
                ]
            }else if (body == 'Inhouse Training') {
                const buttons = [
                    {buttonId: '/order', buttonText: {displayText: 'Layanan Lainnya'}, type: 1},
                    {buttonId: 'Layanan Inhouse Training  ', buttonText: {displayText: 'Iya, Gunakan Layanan'}, type: 1},
                  ]
                  const buttonMessage = {
                      text: "Untuk dapat lebih memahami Hak dan Kewajiban Perpajakan, kami dapat memberikan layanan pelatihan atau In-house Training di tempat Wajib Pajak.",
                      footer: 'bamahadigital',
                      buttons: buttons,
                      headerType: 1
                  }
                client.detail_layanan[from] = [
                    await client.sendMessage(from, buttonMessage)
                ]
            }
            db.put(`${from}-kategori`, body);  // store some data, like this.
            return delete client.kategori[from]
        }
    } catch(e) {}

    try {
        if (from in client.detail_layanan && body != '/order') {
            await rid_sendText('Terima kasih telah memilih *'+body+'*')
            db.put(`${from}-detail_layanan`, body);  // store some data, like this.
            await sleep(3000)
            client.nama_pemesan[from] = [
                await rid_sendText('Oh iya dengan Bapak/Ibu siapa kami berdiskusi?')
            ]
            return delete client.detail_layanan[from]

        }
    } catch(e) {}

    try {
        if (from in client.nama_pemesan) {
            db.put(`${from}-nama_pemesan`, body);  // store some data, like this.
            await rid_sendText('Baik Bapak/Ibu *'+body+'*')
            await rid_sendText('Terima kasih atas perkenalannya.')
            client.rencana_diskusi[from] = [
                await rid_sendText('Tanggal berapa kami bisa menghubungi kembali Bapak/Ibu untuk diskusi lebih detail? Tuliskan seperti contoh di bawah ini:  30 September 2022')
            ]
            return delete client.nama_pemesan[from]
        }
    } catch(e) {}

    try {
        if (from in client.rencana_diskusi) {
            db.put(`${from}-rencana_diskusi`, body);  // store some data, like this.
            await rid_sendText('Baik akan kami cek dulu ya jadwalnya, Bapak/Ibu')
            client.detail_diskusi[from] = [
                await rid_sendText('Ow iya mohon menuliskan Hal yang ingin anda diskusikan dengan Kami ya')
            ]
            return delete client.rencana_diskusi[from]
        }
    } catch(e) {}

    try {
        if (from in client.detail_diskusi) {
            db.put(`${from}-detail_diskusi`, body);  // store some data, like this.
            await new Promise(r => setTimeout(r, 2000)); rid_sendText('Terima kasih kak atas pemesanannya')
            await rid_sendText('Nanti Tim Kami akan menghubungi sesuai data yang diberikan tadi ya')
            await rid_sendText('Terima kasih telah menghubungi kami.\n\nSalam Hangat dari Kami,\n\n_Firma Wajib Pajak Indonesia_')
            // sent to admin
            let f_kategori = db.get(`${from}-kategori`)
            let f_detail_layanan = db.get(`${from}-detail_layanan`)
            let f_nama_pemesan = db.get(`${from}-nama_pemesan`)
            let f_rencana_diskusi = db.get(`${from}-rencana_diskusi`)
            let f_detail_diskusi = db.get(`${from}-detail_diskusi`)
            let f_no_wa = db.get(`${from}-no_wa`)
            let capt_admin = `Orderan baru nih :
Nama pemesan = ${db.get(`${from}-nama_pemesan`)}
Kategori Layanan = ${db.get(`${from}-kategori`)}
Rencana Disusi = ${db.get(`${from}-rencana_diskusi`)}
Detail Diskusi = ${db.get(`${from}-detail_diskusi`)}
No wa = ${db.get(`${from}-no_wa`)}
Link WA = https://wa.me/${db.get(`${from}-no_wa`)}`
            await to_admin(capt_admin)
            await fetch(urlAPIOrder + `?kategori=${f_kategori}&nama_pemesan=${f_nama_pemesan}&rencana_diskusi=${f_rencana_diskusi}&detail_diskusi=${f_detail_diskusi}&no_wa=${f_no_wa}`)
            return delete client.detail_diskusi[from]
        }
    } catch(e) {}

    if (body == '/order') {
        if (from in client.kategori) {
            return await already_ses()
        }
        if (from in client.detail_layanan) {
            return await already_ses()
        }
        if (from in client.nama_pemesan) {
            return await already_ses()
        }
        if (from in client.rencana_diskusi) {
            return await already_ses()
        }
        if (from in client.detail_diskusi) {
            return await already_ses()
        }
        db.put(`${from}-no_wa`, from.replace('@s.whatsapp.net', ''));  // store some data, like this.
        let sections = [
            {
            title: "Pendaftaran",
            rows: [
                {title: "NPWP", rowId: "npwp"},
                {title: "PKP", rowId: "pkp"},
            ]
            },
            {
                title: "Konsultasi",
                rows: [
                    {title: "Pajak Pribadi", rowId: "Pajak Pribadi"},
                    {title: "Pajak Badan", rowId: "Pajak Badan"},
                    {title: "Sengketa Pajak", rowId: "Sengketa Pajak"},
                    {title: "Pemeriksaan Pajak", rowId: "Pemeriksaan Pajak"},
                ]
                },
            {
                    title: "Pelatihan",
                    rows: [
                        {title: "Inhouse Training", rowId: "Inhouse Training"},
                    ]
                },
        ]
        const listMessage = {
          text: "Silakan untuk memilih layanan kami ya Bapak/Ibu,\nPilih salah satu dari layanan di bawah ini",
          footer: "bamahadigital.com",
          title: "Layanan Wajib Pajak Indonesia",
          buttonText: "Daftar Layanan Kami",
          sections
        }
        delete client.detail_layanan[from]
        
        return client.kategori[from] = [
            await client.sendMessage(from, listMessage)
        ]
    }
    else {
        // ini pesan default nya...
        // maximal 3 button setau saya, kalo button nya kurang silahkan tambah lagi sesuai kebutuhan.
        // untuk button / template button yang ada url & call button itu di iphone not work (setau saya).
        // karena device yang saya gunakan android aman jadinya gatau untuk (iOS).
        const buttons = [
            {buttonId: '/order', buttonText: {displayText: 'Layanan Kami'}, type: 1}
        ]
        const buttonMessage = {
            text: "*Selamat Datang*\nHalo, Perkenalkan saya *Sapa Uki* Asisten Personal Anda untuk menggunakan layanan ini.\n\nKantor Konsultan Pajak Wajib Pajak Indonesia merupakan Konsultan Pajak Terdaftar dan telah mendapatkan izin dari Direktur Jenderal Pajak Republik Indonesia. Kami menyediakan beragam layanan konsultasi pajak baik untuk Wajib Pajak Orang Pribadi maupun Badan, serta jasa pendampingan sebagai Kuasa Hukum Pengadilan Pajak",
            footer: 'bamahadigital.com',
            buttons: buttons,
            headerType: 1
        }
        return await client.sendMessage(from, buttonMessage)
        
    }

async function rid_sendText(text) {
    return await client.sendMessage(from, { text: text })
}

async function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

async function rid_reply(text) {
    return await client.sendMessage(from, { text: text }, { quoted: m})
}
async function already_ses() {
    return await rid_reply(message_already_ses)
}
async function to_admin(text) {
    return await client.sendMessage(no_admin, { text: text})
}
}

function newFunction() {
    return `Mohon dijawab terlebih dahulu Nama yang belum anda jawab disini`;
}