Templat data proses retur dan pengembalian dana
Templat data proses retur dan pengembalian dana
- Kolom data yang disarankan untuk dikumpulkan
- Langkah proses utama yang perlu dilacak
- Panduan ekstraksi data
Atribut proses retur dan pengembalian dana
| Nama | Deskripsi | ||
|---|---|---|---|
| ID Kasus Retur ReturnCaseId | Pengenal unik untuk kasus retur dan pengembalian dana pelanggan yang menghubungkan semua aktivitas terkait. | ||
| Deskripsi ID Kasus Retur menjadi pengenal utama untuk setiap proses retur. ID ini menghubungkan semua aktivitas yang terkait dengan retur atau permintaan pengembalian dana tertentu, mulai dari pembuatan pesanan retur hingga kasus ditutup. Dalam analisis proses, ID ini menjadi dasar untuk menyusun kembali perjalanan setiap retur dari awal hingga akhir. Anda dapat melacak seluruh siklus, mengukur total waktu proses, dan menganalisis perbedaan antar kasus. Semua peristiwa, data, dan metrik dihimpun serta dihubungkan menggunakan ID ini. Mengapa ini penting ID ini menghubungkan semua langkah proses, sehingga setiap retur dapat dilacak dan dianalisis dari awal hingga akhir. Sumber data Biasanya berupa nomor Return Material Authorization (RMA) atau nomor Sales Order bertipe 'Returned Order' di modul 'Sales and marketing'. Nomor ini dapat ditemukan di tabel seperti 'SalesTable' dengan 'SalesType' bernilai 'Returned Order'. Contoh RMA-001234RMA-001235RMA-001236 | |||
| Waktu peristiwa EventTime | Stempel waktu yang menunjukkan kapan aktivitas atau peristiwa tertentu terjadi. | ||
| Deskripsi Waktu peristiwa, atau stempel waktu, mencatat tanggal dan waktu persis saat suatu aktivitas berlangsung. Setiap aktivitas dalam log peristiwa memiliki stempel waktu yang menunjukkan urutan kronologis peristiwa. Atribut ini penting untuk semua analisis process mining berbasis waktu. Data ini digunakan untuk menghitung waktu siklus antar aktivitas, menemukan waktu tunggu dan hambatan, mengukur durasi keseluruhan kasus, serta memeriksa kepatuhan terhadap perjanjian tingkat layanan (SLA). Akurasi stempel waktu berpengaruh langsung terhadap keandalan analisis kinerja. Mengapa ini penting Stempel waktu ini penting untuk menghitung semua metrik durasi, seperti waktu siklus dan waktu tunggu, yang menjadi dasar analisis kinerja. Sumber data Mengacu pada kolom tanggal pembuatan atau perubahan di berbagai tabel, seperti 'SalesTable.createdDateTime' untuk pembuatan pesanan atau 'WMSJournalTrans.createdDateTime' untuk jurnal gudang. Contoh 2023-10-26T10:00:00Z2023-10-26T14:30:15Z2023-10-27T09:05:42Z | |||
| Nama aktivitas ActivityName | Nama peristiwa bisnis atau tugas tertentu yang terjadi dalam proses retur dan pengembalian dana. | ||
| Deskripsi Atribut ini menjelaskan langkah atau peristiwa tertentu dalam siklus retur dan pengembalian dana, seperti 'Pesanan retur dibuat', 'Barang diterima', atau 'Nota kredit diposting'. Setiap aktivitas mewakili satu tahap proses yang tercatat di sistem. Analisis urutan dan frekuensi aktivitas merupakan inti process mining. Analisis ini membantu memetakan proses, menemukan hambatan antar langkah, serta mengidentifikasi variasi proses yang umum maupun jarang terjadi. Kumpulan aktivitas menentukan cakupan proses yang dianalisis. Mengapa ini penting Atribut ini menentukan langkah-langkah proses, sehingga alur proses dapat dipetakan dan hambatan, pekerjaan ulang, serta penyimpangan dapat ditemukan. Sumber data Atribut konseptual ini berasal dari peristiwa sistem. Atribut dapat dibuat dengan memetakan perubahan status di tabel seperti 'SalesTable' dan 'WMSJournalTable', atau dari log peristiwa tertentu ke nama yang mudah dipahami pengguna. Contoh Pesanan retur dibuatBarang diterimaKode disposisi diterapkanNota kredit diposting | |||
| ID produk ProductId | Pengenal unik untuk produk yang diretur. | ||
| Deskripsi Product ID, yang sering berupa Stock Keeping Unit (SKU), mengidentifikasi barang tertentu yang diretur pelanggan. Setiap baris pesanan retur terkait dengan Product ID. Analisis retur berdasarkan produk penting untuk menemukan barang dengan tingkat retur tinggi. Hal ini dapat menunjukkan masalah pengendalian kualitas, deskripsi produk yang tidak akurat, atau cacat produksi. Hasil analisis membantu Anda menentukan produk yang perlu diselidiki dan diperbaiki lebih dahulu. Mengapa ini penting Memungkinkan analisis retur per produk untuk menemukan barang yang bermasalah dari sisi kualitas atau memiliki volume retur tinggi. Sumber data Kolom ini sesuai dengan kolom 'ItemId' di tabel 'SalesLine' untuk pesanan retur. Contoh SKU-A-123SKU-B-456SKU-C-789 | |||
| Kanal retur ReturnChannel | Metode atau kanal yang digunakan pelanggan untuk mengajukan retur. | ||
| Deskripsi Atribut ini menunjukkan kanal yang digunakan pelanggan untuk memulai proses retur, misalnya 'Portal online', 'Toko', 'Panggilan layanan pelanggan', atau 'Surat'. Analisis proses berdasarkan kanal retur membantu Anda menilai kinerja dan efisiensi setiap kanal. Bisnis dapat membandingkan waktu siklus, biaya, dan kepuasan pelanggan untuk menemukan praktik yang baik serta area yang perlu ditingkatkan atau mendapat investasi. Data ini penting untuk dashboard 'Kinerja Pemanfaatan Kanal Retur'. Mengapa ini penting Memungkinkan perbandingan kinerja antar kanal retur, sehingga Anda dapat mengoptimalkan kanal yang paling efisien dan hemat biaya. Sumber data Informasi ini mungkin disimpan di header pesanan retur ('SalesTable') atau ditentukan dari pengguna yang membuat pesanan. Anda mungkin perlu menambahkan logika khusus atau kolom tersendiri. Contoh Portal webKios di tokoDukungan pelanggan | |||
| Kode alasan retur ReturnReasonCode | Alasan yang disampaikan pelanggan untuk mengembalikan barang. | ||
| Deskripsi Return Reason Code mencatat alasan yang disampaikan pelanggan untuk mengembalikan barang, misalnya 'Barang cacat', 'Ukuran salah', 'Tidak sesuai deskripsi', atau 'Tidak lagi dibutuhkan'. Informasi ini biasanya dikumpulkan saat pelanggan mengajukan retur. Analisis alasan retur penting untuk menemukan akar masalah. Dari sini, bisnis dapat mengidentifikasi masalah kualitas produk, deskripsi produk yang tidak akurat, atau kesalahan logistik. Temuan ini dapat menjadi dasar perbaikan desain produk, pemasaran, dan operasional rantai pasok agar jumlah retur berkurang. Mengapa ini penting Menunjukkan alasan terjadinya retur sehingga bisnis dapat mencari akar masalah, mengurangi tingkat retur, dan meningkatkan kepuasan pelanggan. Sumber data Informasi ini biasanya disimpan pada tingkat baris pesanan retur. Cari kolom kode alasan di tabel 'SalesLine' untuk pesanan retur. Contoh CACATBARANG_SALAHTIDAK_LAGI_DIBUTUHKANRUSAK_SAAT_PENGIRIMAN | |||
| Kode disposisi DispositionCode | Kode yang menunjukkan hasil pemeriksaan barang dan tindakan selanjutnya. | ||
| Deskripsi Kode disposisi ditetapkan saat barang retur menjalani pemeriksaan kualitas. Kode ini menentukan langkah proses berikutnya, seperti 'Credit', 'Replace', 'Scrap', atau 'Return to Customer'. Atribut ini menjadi titik pengambilan keputusan penting dalam proses retur. Analisis berdasarkan kode disposisi membantu perusahaan memahami hasil retur, melacak dampak keuangan dari penghapusan barang, dan membandingkan efisiensi berbagai jalur penyelesaian, seperti penggantian barang atau pengembalian dana. Mengapa ini penting Kode ini menentukan jalur yang akan ditempuh kasus retur setelah pemeriksaan. Karena itu, kode ini penting untuk menganalisis variasi proses dan dampaknya terhadap bisnis. Sumber data Kolom ini penting dalam modul manajemen kualitas. Kolom ini terkait dengan pemrosesan Quality Order atau Inspection Order. Contoh CRDTREPL-DSCRAPRTV | |||
| Pengguna yang bertanggung jawab ResponsibleUser | Pengguna atau karyawan yang melakukan atau bertanggung jawab atas aktivitas tertentu. | ||
| Deskripsi Atribut ini menunjukkan orang yang bertanggung jawab menjalankan langkah proses. Orang tersebut dapat berupa petugas gudang yang menerima barang, pemeriksa kualitas, atau staf keuangan yang memposting nota kredit. Analisis proses berdasarkan pengguna membantu memahami pembagian beban kerja, menemukan karyawan berkinerja tinggi, dan mengetahui kebutuhan pelatihan. Analisis ini juga dapat digunakan untuk memeriksa kasus yang ditangani orang atau tim tertentu serta memastikan pemisahan tugas yang tepat. Mengapa ini penting Atribut ini memungkinkan analisis pembagian beban kerja dan kinerja individu atau tim, serta membantu menemukan peluang pelatihan atau pengalokasian sumber daya. Sumber data Ditemukan di kolom 'created by' atau 'modified by' pada rekaman transaksi, seperti 'SalesTable.createdBy' atau ID pengguna yang terhubung di tabel jurnal. Contoh Alice.WBob.JChris.P | |||
| ID gudang WarehouseId | Pengenal gudang atau lokasi tempat barang retur diterima. | ||
| Deskripsi Atribut ini menunjukkan gudang fisik atau pusat retur tertentu yang memproses barang retur. Setiap lokasi mungkin memiliki proses, sumber daya, atau tingkat kinerja yang berbeda. Analisis proses berdasarkan gudang memungkinkan Anda membandingkan kinerja antar lokasi. Analisis ini dapat menunjukkan fasilitas yang paling efisien dalam memproses retur, menyoroti hambatan di wilayah tertentu, dan membantu pengambilan keputusan tentang alokasi sumber daya serta standardisasi proses di seluruh jaringan logistik. Mengapa ini penting Memungkinkan perbandingan kinerja antar gudang atau pusat retur untuk menemukan hambatan di wilayah tertentu dan praktik yang baik. Sumber data Informasi ini disimpan di kolom 'InventLocationId' pada transaksi terkait inventaris, seperti Arrival Journal ('WMSJournalTable') atau 'SalesLine'. Contoh WH-EASTWH-WESTCENTRAL-DC | |||
| ID nota kredit CreditNoteId | Pengenal unik untuk dokumen nota kredit yang dibuat untuk pengembalian dana. | ||
| Deskripsi Saat pengembalian dana diproses, sistem membuat dokumen keuangan yang disebut nota kredit atau memo kredit. Atribut ini menyimpan ID unik dokumen tersebut. ID ini menghubungkan proses retur operasional langsung dengan catatan keuangan di sistem akuntansi. ID ini berguna untuk audit dan penelusuran selisih keuangan secara terperinci. Analis dapat menelusuri kasus retur hingga ke transaksi keuangan yang menyelesaikannya. Mengapa ini penting Menghubungkan proses retur operasional dengan transaksi keuangan terkait. Hal ini penting untuk audit dan rekonsiliasi keuangan. Sumber data Nomor nota kredit biasanya terdapat di kolom 'InvoiceId' pada tabel 'CustInvoiceJour', dengan jenis transaksi 'Credit note'. Data ini dapat ditautkan kembali ke pesanan retur. Contoh CN-10056CN-10057CN-10058 | |||
| ID pelanggan CustomerId | Pengenal unik untuk pelanggan yang mengajukan retur. | ||
| Deskripsi Customer ID adalah pengenal unik untuk akun pelanggan yang terkait dengan retur. ID ini menghubungkan transaksi retur dengan pelanggan tertentu di CRM atau basis data pelanggan. Analisis retur berdasarkan pelanggan membantu menemukan pelanggan dengan aktivitas retur yang tidak biasa tingginya. Hal ini dapat mengindikasikan penipuan atau ketidakpuasan yang berulang. Data ini juga dapat digunakan untuk mengelompokkan pelanggan, misalnya dengan menawarkan layanan retur premium kepada pelanggan bernilai tinggi. Mengapa ini penting Menghubungkan proses retur dengan pelanggan tertentu, sehingga Anda dapat menganalisis pola retur per pelanggan dan mendeteksi potensi penipuan. Sumber data Kolom ini adalah 'CustAccount' di tabel 'SalesTable' untuk pesanan retur. Contoh CUST-00045CUST-00192CUST-00315 | |||
| Jenis retur ReturnType | Mengelompokkan retur berdasarkan hasil yang diharapkan, seperti pengembalian dana atau penggantian barang. | ||
| Deskripsi Atribut ini mengelompokkan kasus retur berdasarkan jenis penyelesaian yang diminta pelanggan atau ditawarkan bisnis. Jenis yang umum mencakup pengembalian dana, penggantian barang, atau perbaikan. Pengelompokan ini berguna untuk menganalisis jalur proses yang berbeda. Proses pengembalian dana sangat berbeda dari proses pengiriman barang pengganti. Dengan mengelompokkan data berdasarkan jenis retur, Anda dapat menganalisis waktu siklus dan hambatan secara lebih akurat untuk setiap jalur penyelesaian. Mengapa ini penting Memungkinkan analisis berdasarkan hasil yang dituju, karena proses pengembalian dana dan penggantian barang memiliki langkah serta waktu siklus yang berbeda. Sumber data Informasi ini mungkin berupa kolom khusus di header pesanan retur atau ditentukan dari kode disposisi maupun transaksi berikutnya, seperti pembuatan pesanan penjualan pengganti. Contoh Pengembalian danaPenggantian barangKredit toko | |||
| Jumlah pengembalian dana aktual ActualRefundAmount | Nilai akhir pengembalian dana yang diberikan kepada pelanggan. | ||
| Deskripsi Atribut ini menunjukkan jumlah akhir yang telah dikonfirmasi dan dikembalikan kepada pelanggan. Nilainya dicatat saat nota kredit dibuat dan dibukukan. Atribut ini penting untuk analisis keuangan dan digunakan langsung dalam dashboard 'Analisis Selisih Jumlah Pengembalian Dana' serta KPI 'Tingkat Ketepatan Jumlah Pengembalian Dana'. Analisis data ini membantu Anda memahami dampak finansial retur dan penyesuaian yang dilakukan selama proses. Mengapa ini penting Menunjukkan dampak finansial aktual dari retur. Nilai ini penting untuk menghitung ketepatan pengembalian dana dan memahami hasil keuangan. Sumber data Nilai ini dapat ditemukan di detail transaksi nota kredit yang telah dibukukan. Data terkait terdapat di tabel 'CustTrans' dan 'CustInvoiceJour' untuk nota kredit. Contoh 99.99135.000.00 | |||
| Jumlah pengembalian dana yang diminta RequestedRefundAmount | Total nilai uang yang diminta pelanggan untuk dikembalikan. | ||
| Deskripsi Atribut ini menunjukkan jumlah pengembalian dana awal yang diminta atau diperkirakan pada awal proses retur. Jumlahnya biasanya didasarkan pada harga pembelian awal barang yang diretur. Nilai ini menjadi acuan untuk 'Analisis Selisih Jumlah Pengembalian Dana'. Dengan membandingkan jumlah yang diminta dan jumlah yang benar-benar dikembalikan, bisnis dapat menemukan selisih akibat biaya pengisian ulang stok, pengembalian dana sebagian untuk barang rusak, atau penyesuaian lainnya. Perbandingan ini membantu memantau ketepatan keuangan dan kepatuhan terhadap kebijakan. Mengapa ini penting Menjadi acuan untuk mengukur ketepatan keuangan dengan membandingkannya terhadap jumlah pengembalian dana yang benar-benar diproses. Sumber data Biasanya berupa jumlah baris atau jumlah total dari baris pesanan penjualan awal yang diretur. Nilainya terdapat di 'SalesLine.LineAmount'. Contoh 99.99150.0024.50 | |||
| Pembaruan data terakhir LastDataUpdate | Stempel waktu yang menunjukkan kapan data proses terakhir kali diperbarui. | ||
| Deskripsi Atribut ini mencatat tanggal dan waktu terakhir kali data diambil dari sistem sumber dan diperbarui di alat process mining. Informasi ini menunjukkan seberapa baru data yang dianalisis. Waktu pembaruan data terakhir membantu Anda memahami seberapa mutakhir analisis yang ditampilkan. Dengan mengetahui waktu tersebut, pengguna dapat menafsirkan dashboard dan KPI dengan tepat, serta membedakan data waktu nyata dari rekaman data pada waktu tertentu. Informasi ini penting untuk pemantauan operasional. Mengapa ini penting Menunjukkan seberapa baru data, sehingga analis mengetahui kemutakhiran wawasan proses yang digunakan. Sumber data Atribut metadata ini dibuat dan disimpan selama alur pemuatan data. Biasanya, nilainya menunjukkan stempel waktu saat tugas ETL selesai. Contoh 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| Sesuai kebijakan IsPolicyAdherent | Penanda yang menunjukkan apakah persetujuan retur mematuhi kebijakan retur yang berlaku. | ||
| Deskripsi Atribut boolean hasil perhitungan ini menunjukkan apakah retur memenuhi semua kriteria dalam kebijakan retur perusahaan. Penilaiannya dapat didasarkan pada masa retur, kondisi barang, atau alasan retur. Atribut ini mendukung dashboard 'Ringkasan Kepatuhan Persetujuan Retur' dan KPI 'Tingkat Persetujuan Retur yang Mematuhi Kebijakan'. Bisnis dapat mengukur kepatuhan terhadap kebijakan, menemukan kasus yang disetujui sebagai pengecualian, serta menganalisis alasan dan frekuensi pengecualian tersebut. Informasi ini penting untuk tata kelola dan pengendalian biaya. Mengapa ini penting Mengukur kepatuhan terhadap aturan bisnis secara langsung, sehingga Anda dapat menemukan dan mengurangi persetujuan retur yang tidak sesuai kebijakan dan berpotensi menyebabkan hilangnya pendapatan. Sumber data Atribut ini diturunkan dari data lain. Logikanya perlu dibuat dengan membandingkan atribut retur, misalnya tanggal retur dengan tanggal pembelian atau alasan retur, terhadap aturan bisnis yang telah ditetapkan. Contoh truefalse | |||
| Sistem sumber SourceSystem | Sistem informasi tempat data peristiwa diambil. | ||
| Deskripsi Atribut ini menunjukkan sistem informasi asal data. Dalam konteks ini, sistem sumber utamanya adalah 'Microsoft Dynamics 365'. Di organisasi besar, suatu proses dapat melibatkan beberapa sistem. Mencatat sistem sumber untuk setiap peristiwa penting untuk tata kelola data, penanganan masalah pengambilan data, dan pemahaman tentang sistem yang digunakan dalam proses. Informasi ini memastikan asal data yang dianalisis dapat diketahui. Mengapa ini penting Atribut ini memberi konteks penting tentang asal data, yang diperlukan untuk tata kelola dan validasi data serta untuk memahami sistem yang digunakan dalam proses. Sumber data Biasanya, nilai statis ini ditambahkan saat proses ekstraksi, transformasi, dan pemuatan data (ETL) untuk menandai asal kumpulan data. Contoh Microsoft Dynamics 365 F&OD365-PROD | |||
| Status pesanan retur ReturnOrderStatus | Status keseluruhan pesanan retur saat peristiwa terjadi. | ||
| Deskripsi Atribut ini menunjukkan status terkini header pesanan retur, misalnya 'Terbuka', 'Ditagih', atau 'Dibatalkan'. Status ini memberi gambaran umum tentang tahap yang sedang dijalani kasus. Aktivitas menunjukkan langkah proses secara terperinci, sedangkan status keseluruhan berguna untuk memfilter dan mengelompokkan kasus. Misalnya, analis dapat berfokus pada kasus yang masih 'Terbuka' untuk memahami beban kerja saat ini, atau menganalisis alur proses kasus yang akhirnya 'Dibatalkan'. Mengapa ini penting Memberi ringkasan status kasus untuk membantu Anda memfilter kasus dan memahami hasilnya, termasuk pembatalan. Sumber data Informasi ini terdapat di kolom 'SalesStatus' atau 'DocumentStatus' pada 'SalesTable'. Contoh Pesanan terbukaTerkirimDitagihDibatalkan | |||
| Status SLA SlaStatus | Menunjukkan apakah kasus diselesaikan dalam batas waktu target Service Level Agreement. | ||
| Deskripsi Atribut hasil perhitungan ini menunjukkan status kepatuhan SLA secara ringkas, biasanya 'Tepat waktu' atau 'Terlambat'. Status ditentukan dengan membandingkan waktu aktivitas terakhir, misalnya 'Pesanan retur ditutup', dengan 'RefundSlaTargetDate'. Atribut ini memudahkan pelaporan kinerja di dashboard seperti 'Kinerja SLA Penyelesaian Pengembalian Dana'. Pengguna tidak perlu membandingkan tanggal sendiri karena statusnya ditampilkan secara langsung dan mudah dipahami. Anda dapat memfilter dan mengelompokkan data dengan cepat untuk menghitung 'Tingkat Kepatuhan SLA Penyelesaian' secara keseluruhan. Mengapa ini penting Memberi gambaran singkat tentang kepatuhan SLA, sehingga Anda dapat dengan mudah memfilter kasus yang terlambat dan menganalisis akar penyebab keterlambatan. Sumber data Atribut ini diturunkan dari data lain dengan membandingkan waktu aktivitas penyelesaian akhir dengan atribut 'RefundSlaTargetDate'. Contoh Tepat waktuTerlambat | |||
| Tanggal target SLA pengembalian dana RefundSlaTargetDate | Tanggal target penyelesaian seluruh proses retur dan pengembalian dana. | ||
| Deskripsi Atribut ini menetapkan tenggat Service Level Agreement (SLA) untuk menyelesaikan kasus retur. Pada tanggal ini, pelanggan diharapkan sudah menerima penyelesaian akhir, seperti pengembalian dana yang dibukukan atau barang pengganti yang dikirim. Tanggal target ini penting untuk memantau kinerja terhadap komitmen layanan. Tanggal ini digunakan untuk menghitung KPI 'Tingkat Kepatuhan SLA Penyelesaian' dan mendukung dashboard 'Kinerja SLA Penyelesaian Pengembalian Dana'. Dengan membandingkan tanggal target dan tanggal penyelesaian aktual, bisnis dapat menemukan kasus yang melewati tenggat SLA dan menangani kasus yang belum selesai tepat waktu. Mengapa ini penting Menjadi tolok ukur kinerja proses, sehingga Anda dapat memantau kepatuhan SLA dan menemukan kasus yang terlambat. Sumber data Kolom ini mungkin bukan kolom standar. Nilainya sering dihitung dari tanggal pembuatan retur ditambah periode SLA yang ditetapkan, misalnya 14 hari. Nilainya mungkin disimpan di kolom khusus. Contoh 2023-11-10T23:59:59Z2023-11-15T23:59:59Z | |||
| Waktu selesai EndTime | Stempel waktu yang menunjukkan kapan aktivitas tertentu selesai. | ||
| Deskripsi Waktu selesai menunjukkan stempel waktu saat suatu aktivitas berakhir. StartTime menandai awal aktivitas, sedangkan EndTime menandai akhirnya. Dengan demikian, waktu pemrosesan untuk tugas tersebut dapat dihitung. Atribut ini penting untuk analisis kinerja terperinci, terutama pada tugas yang memiliki durasi terukur, seperti 'Pemeriksaan barang'. Dengan membandingkan StartTime dan EndTime, analis dapat mengukur waktu kerja aktif secara tepat dan membedakannya dari waktu tunggu antar tugas. Ini membantu menemukan inefisiensi dalam aktivitas tertentu, bukan hanya di antara aktivitas. Mengapa ini penting Atribut ini membantu menghitung waktu kerja aktif untuk setiap aktivitas, sehingga waktu tunggu dapat dibedakan dari waktu kerja sebenarnya. Sumber data Nilai ini sering kali perlu diturunkan dari data lain. Misalnya, nilainya dapat berupa 'modifiedDateTime' saat status berubah dan aktivitas berakhir, atau StartTime aktivitas berikutnya. Contoh 2023-10-26T10:15:00Z2023-10-26T14:45:20Z2023-10-27T09:55:12Z | |||
Aktivitas proses retur dan pengembalian dana
| Aktivitas | Deskripsi | ||
|---|---|---|---|
| Barang diterima | Aktivitas ini menandai penerimaan fisik barang retur di gudang atau pusat retur yang ditentukan. Peristiwa ini tercatat saat jurnal kedatangan yang terkait dengan pesanan retur diposting. | ||
| Mengapa ini penting Ini adalah tonggak penting yang menandai peralihan dari tindakan pelanggan ke pemrosesan internal. Waktu penanganan internal, seperti pemeriksaan dan penentuan disposisi, mulai dihitung dari titik ini. Sumber data Stempel waktu posting WMS Journal atau Item Arrival Journal yang terkait dengan baris ReturnOrder. Transaksi persediaan diperbarui ke status 'Registered' atau 'Received'. Pengumpulan data Peristiwa posting Item Arrival Journal yang terhubung ke baris pesanan retur. Jenis peristiwa explicit | |||
| Kode disposisi diterapkan | Aktivitas ini menandai selesainya pemeriksaan dan keputusan tentang tindakan terhadap barang retur. Kode disposisi, seperti 'Credit', 'Scrap', atau 'Replace', ditetapkan pada baris retur. | ||
| Mengapa ini penting Ini adalah titik pengambilan keputusan penting yang menentukan jalur proses berikutnya, seperti pengembalian dana, penukaran, atau penolakan. Keterlambatan pada tahap ini dapat memperpanjang waktu penyelesaian secara signifikan. Sumber data Peristiwa ini tercatat saat kolom DispositionCode diisi pada transaksi persediaan baris pesanan retur atau jurnal terkait. Pengumpulan data Peristiwa pembaruan saat DispositionCode ditetapkan untuk baris pesanan retur. Jenis peristiwa explicit | |||
| Nota kredit diposting | Nota kredit resmi diposting ke buku besar keuangan, sehingga kredit tersedia bagi pelanggan. Dari sisi perusahaan, ini menandai selesainya tindakan pengembalian dana. | ||
| Mengapa ini penting Ini adalah tonggak penting dalam proses keuangan yang memastikan pengembalian dana telah diproses di sistem. Aktivitas ini sering menjadi acuan untuk mengukur kepatuhan terhadap SLA pengembalian dana. Sumber data Stempel waktu posting jurnal faktur untuk pesanan retur, yang menyelesaikan nota kredit. Status pesanan retur berubah menjadi 'Invoiced'. Pengumpulan data Posting jurnal faktur pesanan retur. Jenis peristiwa explicit | |||
| Pesanan retur dibuat | Aktivitas ini menandai dimulainya proses retur, saat Return Material Authorization (RMA) atau pesanan retur dibuat di sistem. Peristiwa ini tercatat secara eksplisit ketika rekaman ReturnOrder baru dibuat di Dynamics 365. | ||
| Mengapa ini penting Ini adalah peristiwa awal utama dalam seluruh proses retur. Dengan menganalisis waktu dari aktivitas ini ke aktivitas lainnya, Anda dapat mengetahui total waktu proses dan menemukan hambatan pada tahap awal. Sumber data Peristiwa ini diambil dari stempel waktu pembuatan header ReturnOrder. Biasanya, datanya ada di SalesTable dengan SalesType bernilai 'Returned Order'. Pengumpulan data Peristiwa pembuatan rekaman SalesTable dengan SalesType = 'Returned Order'. Jenis peristiwa explicit | |||
| Pesanan retur ditutup | Pesanan retur mencapai status akhir. Semua transaksi fisik dan keuangan telah selesai. Biasanya, ini terjadi setelah nota kredit diposting atau barang pengganti dikirim. | ||
| Mengapa ini penting Ini adalah peristiwa akhir utama untuk proses retur yang berhasil diselesaikan. Durasi dari pembuatan hingga tahap ini menunjukkan total waktu siklus kasus. Sumber data Disimpulkan dari perubahan kolom status ReturnOrder ke nilai akhir, seperti 'Invoiced' atau 'Closed'. Artinya, tidak ada pemrosesan lanjutan yang diharapkan. Pengumpulan data Perubahan kolom SalesTable.Status atau SalesTable.DocumentStatus ke status akhir. Jenis peristiwa inferred | |||
| Barang pengganti dikirim | Surat jalan barang pengganti diposting, menandakan bahwa barang telah dikirim kepada pelanggan. Ini menandai selesainya proses pemenuhan penukaran. | ||
| Mengapa ini penting Ini adalah tonggak penting dalam jalur penukaran yang menandakan perusahaan telah memenuhi kewajibannya kepada pelanggan. Aktivitas ini penting untuk melacak waktu siklus penukaran. Sumber data Tanggal posting jurnal surat jalan untuk pesanan penjualan barang pengganti. Status pesanan diperbarui menjadi 'Delivered'. Pengumpulan data Posting surat jalan untuk pesanan penjualan barang pengganti. Jenis peristiwa explicit | |||
| Jurnal kedatangan dibuat | Aktivitas ini menandakan bahwa gudang sedang menunggu kedatangan barang retur. Jurnal kedatangan dibuat untuk menyiapkan sistem sebelum barang diterima secara fisik. | ||
| Mengapa ini penting Langkah ini memisahkan persiapan logistik dari penerimaan barang secara fisik. Data ini membantu menganalisis kesiapan gudang dan merencanakan penerimaan retur. Sumber data Pembuatan rekaman di WMSJournalTable dengan JournalType 'Arrival'. Jurnal ini terhubung ke baris pesanan retur. Pengumpulan data Stempel waktu pembuatan rekaman WMSJournalTable untuk retur. Jenis peristiwa explicit | |||
| Nota kredit dibuat | Nota kredit dibuat berdasarkan disposisi 'Credit' untuk mengizinkan pengembalian dana kepada pelanggan. Ini menandai dimulainya proses penyelesaian keuangan secara resmi. | ||
| Mengapa ini penting Aktivitas ini menandai persetujuan pengembalian dana. Waktu antara penetapan disposisi dan pembuatan nota kredit menunjukkan keterlambatan administratif dalam memulai pengembalian dana. Sumber data Peristiwa ini dapat diketahui dari pembuatan rekaman SalesTable baru dengan nilai negatif yang terhubung ke pesanan retur awal, atau dari pelaksanaan batch job 'Create credit note'. Pengumpulan data Pembuatan nota kredit, biasanya dengan memposting faktur pesanan retur. Jenis peristiwa explicit | |||
| Pesanan pemeriksaan kualitas dibuat | Pesanan pemeriksaan kualitas resmi dibuat. Ini menandakan bahwa barang retur harus menjalani pemeriksaan terstruktur, biasanya untuk retur yang memerlukan pengujian terperinci atau pemeriksaan terhadap standar kualitas. | ||
| Mengapa ini penting Aktivitas ini menandai dimulainya pemeriksaan resmi. Dengan melacak waktu sejak tahap ini, Anda dapat mengukur efisiensi dan durasi alur kerja pemeriksaan kualitas. Sumber data Stempel waktu pembuatan rekaman di InventQualityOrderTable yang terhubung ke pesanan retur. Pengumpulan data Pembuatan rekaman InventQualityOrderTable. Jenis peristiwa explicit | |||
| Pesanan pengganti dibuat | Pesanan penjualan baru dibuat untuk mengirim barang pengganti kepada pelanggan. Aktivitas ini terjadi saat tindakan disposisi adalah 'Replace and Credit' atau 'Replace and Scrap'. | ||
| Mengapa ini penting Aktivitas ini memulai jalur proses penukaran. Melacak jalur ini secara terpisah dari jalur pengembalian dana penting untuk memahami kerumitan dan biaya penukaran. Sumber data Pembuatan rekaman SalesTable baru untuk barang pengganti. Rekaman ini sering dibuat secara otomatis dan terhubung ke pesanan retur awal. Pengumpulan data Pembuatan Sales Order baru yang terhubung ke Return Order melalui tindakan disposisi. Jenis peristiwa explicit | |||
| Pesanan retur dibatalkan | Pesanan retur dibatalkan sebelum selesai. Pembatalan dapat terjadi atas permintaan pelanggan atau karena barang tidak pernah dikembalikan. | ||
| Mengapa ini penting Ini menandai akhir proses yang berbeda dari penyelesaian yang berhasil. Menganalisis alasan pembatalan retur dapat memberi wawasan tentang perilaku pelanggan atau kegagalan proses. Sumber data Disimpulkan dari perubahan kolom status ReturnOrder menjadi 'Cancelled'. Ini merupakan status akhir yang berbeda dari pesanan yang berhasil ditutup. Pengumpulan data Perubahan kolom SalesTable.Status menjadi 'Cancelled'. Jenis peristiwa inferred | |||
| Pesanan retur dikonfirmasi | Aktivitas ini menandai konfirmasi resmi pesanan retur di sistem dan sering kali memicu proses lanjutan. Biasanya, aktivitas ini tercatat sebagai tindakan eksplisit atau perubahan status pada header ReturnOrder. | ||
| Mengapa ini penting Konfirmasi merupakan langkah penting sebelum proses logistik dimulai. Keterlambatan antara pembuatan dan konfirmasi dapat menunjukkan penumpukan pekerjaan administratif atau masalah sistem. Sumber data Aktivitas ini dapat diketahui dari jurnal 'Confirmation' yang diposting untuk pesanan retur atau perubahan pada kolom DocumentStatus di SalesTable. Pengumpulan data Pelaksanaan fungsi 'Confirm sales order' untuk pesanan retur. Jenis peristiwa explicit | |||
Panduan ekstraksi
Langkah
- Prasyarat: Daftarkan aplikasi di Azure Active Directory. Sebelum terhubung ke API Dynamics 365, daftarkan aplikasi di tenant Azure AD Anda. Berikan izin delegasi kepada aplikasi tersebut untuk mengakses Dynamics 365 Finance & Operations, misalnya
Financials.ReadWrite.Allatau izin khusus. - Atur ID aplikasi di Dynamics 365. Di Dynamics 365, buka System administration > Setup > Azure Active Directory applications. Tambahkan Application (client) ID dari pendaftaran aplikasi Azure AD, lalu kaitkan dengan akun pengguna yang memiliki peran keamanan yang diperlukan untuk membaca entitas data.
- Dapatkan access token OAuth 2.0. Tulis skrip, misalnya dengan PowerShell atau Python, untuk melakukan autentikasi melalui endpoint Microsoft identity platform. Gunakan kredensial aplikasi (client ID dan secret) untuk meminta access token bagi URL sumber daya Dynamics 365.
- Temukan URL lingkungan Dynamics 365. Cari URL dasar lingkungan Dynamics 365 Anda. Endpoint Web API biasanya berbentuk
https://[YourD365FinanceAndOpsURL].dynamics.com/data. - Susun dan jalankan permintaan API OData. Untuk masing-masing dari 12 aktivitas yang diperlukan, susun URL permintaan OData GET tersendiri. Gunakan
$selectuntuk mengambil hanya kolom yang diperlukan dan$filteruntuk menentukan rentang tanggal serta kondisi status. Sertakan token autentikasi dari langkah 3 sebagai Bearer token di header otorisasi setiap permintaan. - Buat skrip ekstraksi. Buat skrip yang menjalankan daftar permintaan OData satu per satu. Skrip ini perlu menangani autentikasi, menjalankan setiap permintaan GET, dan menyimpan data JSON yang diterima. Perhatikan batas API dan tambahkan jeda jika diperlukan.
- Tangani paginasi API. Dynamics 365 membagi hasil berukuran besar ke beberapa halaman. Skrip Anda harus memeriksa properti
@odata.nextLinkpada respons. Jika properti tersebut ada, skrip perlu mengirim permintaan berikutnya ke URL itu untuk mengambil halaman data selanjutnya. Ulangi sampai tidak ada laginextLink. - Transformasikan dan gabungkan data. Olah respons JSON dari masing-masing 12 panggilan API. Untuk setiap aktivitas, buat rekaman dengan format standar yang memuat
ReturnCaseId,ActivityName,EventTime, dan atribut lainnya. Misalnya, untuk peristiwa 'Return Order Created', petakanReturnOrderNumberkeReturnCaseId, isiActivityNamedengan 'Return Order Created', dan petakancreatedDateTimekeEventTime. Gabungkan rekaman yang sudah ditransformasikan dari semua panggilan ke dalam satu daftar atau tabel. - Bersihkan dan seragamkan stempel waktu. Pastikan semua nilai
EventTimemenggunakan format yang sama, sebaiknya UTC dengan format sepertiYYYY-MM-DDTHH:MM:SSZ. Tangani rekaman dengan stempel waktu yang kosong atau tidak valid sesuai kebutuhan. - Ekspor log peristiwa akhir. Setelah semua data terkumpul dan digabungkan menjadi satu set data, ekspor ke file CSV. Pastikan nama header kolom sesuai persyaratan ProcessMind:
ReturnCaseId,ActivityName,EventTime,ResponsibleUser,DispositionCode, dan seterusnya. File siap diunggah.
Konfigurasi
- URL endpoint API: URL dasar untuk instans Dynamics 365 Finance & Operations Anda. Formatnya
https://[YourEnvironmentName].dynamics.com/data. - Aplikasi Azure AD: Aplikasi harus terdaftar di Azure AD dengan client ID dan secret. Aplikasi memerlukan izin API untuk mengakses entitas data Dynamics 365.
- Filter rentang tanggal: Setiap panggilan API wajib menggunakan parameter OData
$filterpada kolom tanggal yang relevan, seperticreatedDateTimeataumodifiedDateTime. Sebagai awal, gunakan data 3 hingga 6 bulan terakhir agar ekstraksi tetap mudah dikelola. - Filter perusahaan: Untuk mengambil data dari badan hukum tertentu, sertakan parameter kueri
cross-company=true, lalu gunakan$filterpada kolomdataAreaId. Contoh:?cross-company=true&$filter=dataAreaId eq '[YourCompanyCode]'. - Pengaturan paginasi: Gunakan header
Prefer: odata.maxpagesize=[value]dalam permintaan untuk mengatur jumlah rekaman per halaman. Nilai yang umum digunakan adalah1000hingga5000. Pengaturan ini membantu mencegah API mengalami timeout saat mengambil data dari entitas besar. - Pembatasan laju API: Perhatikan batas perlindungan layanan API Dynamics 365. Skrip ekstraksi perlu menangani respons
429 (Too Many Requests), biasanya dengan jeda yang makin panjang atau mekanisme jeda lalu coba lagi.
Contoh kueri graphql
/*
This is a conceptual guide representing multiple, distinct OData API calls.
You will need a script (e.g., Python, PowerShell) to execute these calls sequentially,
authenticate with a bearer token, handle pagination, and union the results into a single file.
Replace [YourD365URL], [StartDate], [EndDate], and [YourCompanyCode] with your specific values.
*/
// Base URL for all requests
const string BaseUrl = "https://[YourD365URL].dynamics.com/data";
const string CompanyFilter = "?cross-company=true&$filter=dataAreaId eq '[YourCompanyCode]' and ";
const string DateFilterCreated = "createdDateTime ge [StartDate]T00:00:00Z and createdDateTime le [EndDate]T23:59:59Z";
const string DateFilterModified = "modifiedDateTime ge [StartDate]T00:00:00Z and modifiedDateTime le [EndDate]T23:59:59Z";
// 1. Return Order Created
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}{DateFilterCreated}&$select=ReturnOrderNumber,createdDateTime,createdby,ReturnReasonCodeId
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser, ReturnReasonCodeId -> ReturnReasonCode
// 2. Return Order Confirmed
// This often updates the header status. We look for a modification time on confirmed orders.
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}ReturnOrderStatus eq 'Confirmed' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby,ReturnReasonCodeId
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Confirmed' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser
// 3. Arrival Journal Created
GET {BaseUrl}/WarehouseArrivalJournalHeaders{CompanyFilter}{DateFilterCreated}&$expand=WarehouseArrivalJournalLines($select=InventTransactionId)&$select=JournalNumber,createdDateTime,createdby
// Note: This requires post-processing to link JournalNumber to a ReturnCaseId via InventTransactionId.
// Mapping: Link via InventTrans -> ReturnCaseId, 'Arrival Journal Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser
// 4. Item Received (Arrival Journal Posted)
GET {BaseUrl}/WarehouseArrivalJournalHeaders{CompanyFilter}JournalPosted eq 'Yes' and {DateFilterModified}&$expand=WarehouseArrivalJournalLines($select=InventTransactionId)&$select=JournalNumber,modifiedDateTime,modifiedby
// Mapping: Link via InventTrans -> ReturnCaseId, 'Item Received' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser
// 5. Quality Order Generated
GET {BaseUrl}/InventQualityOrders{CompanyFilter}{DateFilterCreated}&$select=QualityOrderId,InventTransId,createdDateTime,CreatedByUserId,ItemId
// Mapping: Link via InventTransId -> ReturnCaseId, 'Quality Order Generated' -> ActivityName, createdDateTime -> EventTime, CreatedByUserId -> ResponsibleUser, ItemId -> ProductId
// 6. Disposition Code Applied
// This is a status change on the return line.
GET {BaseUrl}/ReturnOrderLines{CompanyFilter}ReturnDispositionCodeId ne '' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby,ReturnDispositionCodeId,ItemId
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Disposition Code Applied' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser, ReturnDispositionCodeId -> DispositionCode, ItemId -> ProductId
// 7. Credit Note Created
// Look for sales orders with type 'Returned Order' that are not yet invoiced.
GET {BaseUrl}/SalesOrderHeadersV2{CompanyFilter}SalesOrderProcessingStatus eq 'Open' and SalesOrderType eq 'ReturnedOrder' and {DateFilterCreated}&$select=SalesOrderNumber,createdDateTime,createdby
// Mapping: SalesOrderNumber -> ReturnCaseId, 'Credit Note Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser
// 8. Credit Note Posted
// Look for posted invoice journals linked to a return order.
GET {BaseUrl}/SalesInvoiceJournalHeaders{CompanyFilter}SalesOrderType eq 'ReturnedOrder' and {DateFilterCreated}&$select=SalesOrderNumber,InvoiceDate,createdby
// Mapping: SalesOrderNumber -> ReturnCaseId, 'Credit Note Posted' -> ActivityName, InvoiceDate -> EventTime, createdby -> ResponsibleUser
// 9. Replacement Order Created
// Disposition code on the return line triggers a replacement order.
GET {BaseUrl}/SalesOrderHeadersV2{CompanyFilter}SalesOrderOriginType eq 'ReturnOrder' and {DateFilterCreated}&$select=SalesOrderNumber,createdDateTime,createdby,ReturnOrderNumber
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Replacement Order Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser
// 10. Replacement Item Shipped
// Check for posted packing slips related to the replacement sales order.
GET {BaseUrl}/SalesPackingSlipJournals{CompanyFilter}{DateFilterCreated}&$select=SalesOrderNumber,DeliveryDate,createdby
// Note: This requires linking SalesOrderNumber back to the original ReturnOrderNumber for the ReturnCaseId.
// Mapping: Link SalesOrderNumber -> ReturnCaseId, 'Replacement Item Shipped' -> ActivityName, DeliveryDate -> EventTime, createdby -> ResponsibleUser
// 11. Return Order Closed
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}ReturnOrderStatus eq 'Closed' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Closed' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser
// 12. Return Order Cancelled
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}ReturnOrderStatus eq 'Canceled' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Cancelled' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser Langkah
- Aktifkan endpoint TDS: Pastikan endpoint Tabular Data Stream (TDS) diaktifkan untuk lingkungan Dynamics 365 Dataverse Anda. Administrator sistem dapat mengaktifkannya di pusat admin Power Platform melalui Environment > Settings > Features.
- Temukan URL lingkungan: Cari URL lingkungan Anda. Formatnya biasanya
yourorg.crm.dynamics.com. Nama server endpoint TDS menggunakan URL ini dengan port 5558, misalnyayourorg.crm.dynamics.com,5558. - Hubungkan dengan klien SQL: Gunakan klien SQL yang mendukung TDS, seperti SQL Server Management Studio (SSMS) atau Azure Data Studio.
- Lakukan autentikasi: Hubungkan ke server menggunakan akun Azure Active Directory yang memiliki izin sesuai, biasanya peran System Administrator atau System Customizer di lingkungan Dataverse.
- Siapkan kueri: Salin seluruh kueri SQL dari bagian
querydokumen ini ke jendela kueri baru di klien SQL Anda. - Atur parameter: Temukan placeholder dalam kueri. Ganti
'{StartDate}'dan'{EndDate}'dengan rentang tanggal ekstraksi yang diinginkan, misalnya'2023-01-01'dan'2023-12-31'. Sesuaikan juga nilai placeholder untuk kode status atau kode disposisi dengan konfigurasi Dynamics 365 Anda. - Jalankan kueri: Jalankan kueri yang telah diubah pada database Dataverse. Waktu eksekusi bergantung pada volume data dan rentang tanggal yang dipilih.
- Periksa hasil: Setelah kueri selesai, periksa set data yang dihasilkan. Pastikan kolom yang diharapkan tersedia:
ReturnCaseId,ActivityName,EventTime, dan atribut yang disarankan. - Ekspor log peristiwa: Ekspor hasil kueri ke file CSV. Sebagian besar klien SQL menyediakan fungsi bawaan untuk menyimpan hasil langsung ke file. Pastikan file disimpan dengan encoding UTF-8.
- Unggah ke ProcessMind: File CSV yang diekspor siap diunggah ke ProcessMind sebagai log peristiwa baru untuk analisis process mining.
Konfigurasi
- Prasyarat: Anda memerlukan akun pengguna dengan setidaknya akses baca ke tabel Dataverse yang relevan, misalnya SalesTable, SalesLine, CustInvoiceJour. Izin biasanya diatur melalui peran keamanan seperti System Administrator atau peran khusus dengan izin tabel yang memadai.
- Endpoint TDS: Endpoint TDS Dataverse harus diaktifkan untuk lingkungan tersebut. Fitur ini memungkinkan kueri SQL langsung yang hanya dapat membaca data dari database Dataverse.
- Rentang tanggal: Kueri menggunakan placeholder
'{StartDate}'dan'{EndDate}'. Untuk analisis awal, disarankan rentang 3 hingga 6 bulan agar data yang diperoleh mewakili proses tanpa menimbulkan masalah kinerja. - Filter perusahaan: Kueri ini akan berjalan pada semua badan hukum (perusahaan) yang dapat diakses pengguna. Untuk menganalisis satu perusahaan, hapus komentar dan tambahkan klausa
WHEREyang memfilter kolomDATAAREAIDdi setiap bagian pernyataanUNION ALL, misalnyaAND st.DATAAREAID = '[YourCompanyID]'. - Placeholder logika khusus: Kueri memuat placeholder seperti
[YourReplaceCode1]untuk kode disposisi dan catatan tentang cara menghubungkan pesanan pengganti. Sesuaikan placeholder ini dengan proses bisnis dan konfigurasi Dynamics 365 Anda. - Kinerja: Kueri langsung melalui endpoint TDS dapat berjalan lambat untuk set data besar. Koneksi ini dioptimalkan untuk kueri analitis, tetapi gabungan kompleks yang mencakup jutaan baris dapat mengalami timeout. Sebaiknya gunakan filter tanggal yang ketat.
Contoh kueri sql
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Created' AS ActivityName,
st.CREATEDDATETIME AS EventTime,
st.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Confirmed' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.DOCUMENTSTATUS = 1 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Arrival Journal Created' AS ActivityName,
wjt.CREATEDDATETIME AS EventTime,
wjt.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN WMSJOURNALTABLE wjt ON st.SALESID = wjt.ORDERID AND st.DATAAREAID = wjt.DATAAREAID
WHERE st.SALESTYPE = 3 AND wjt.JOURNALTYPE = 4 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Item Received' AS ActivityName,
wjt.POSTEDDATETIME AS EventTime,
wjt.POSTEDUSERID AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN WMSJOURNALTABLE wjt ON st.SALESID = wjt.ORDERID AND st.DATAAREAID = wjt.DATAAREAID
WHERE st.SALESTYPE = 3 AND wjt.JOURNALTYPE = 4 AND wjt.POSTEDDATETIME IS NOT NULL AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Quality Order Generated' AS ActivityName,
iqot.CREATEDDATETIME AS EventTime,
iqot.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
iqot.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN INVENTQUALITYORDERTABLE iqot ON sl.INVENTTRANSID = iqot.INVENTTRANSID AND sl.DATAAREAID = iqot.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Disposition Code Applied' AS ActivityName,
iqot.VALIDATEDDATETIME AS EventTime,
iqot.VALIDATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
iqot.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN INVENTQUALITYORDERTABLE iqot ON sl.INVENTTRANSID = iqot.INVENTTRANSID AND sl.DATAAREAID = iqot.DATAAREAID
WHERE st.SALESTYPE = 3 AND iqot.VALIDATEDDATETIME IS NOT NULL AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Credit Note Created' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.SALESSTATUS = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Credit Note Posted' AS ActivityName,
cij.CREATEDDATETIME AS EventTime,
cij.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN CUSTINVOICEJOUR cij ON st.SALESID = cij.SALESID AND st.DATAAREAID = cij.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
ro.RETURNITEMNUM AS ReturnCaseId,
'Replacement Order Created' AS ActivityName,
replacement_so.CREATEDDATETIME AS EventTime,
replacement_so.CREATEDBY AS ResponsibleUser,
NULL AS DispositionCode,
NULL AS ReturnReasonCode,
replacement_so.SALESORIGINID AS ReturnChannel,
replacement_sl.ITEMID AS ProductId
FROM SALESTABLE ro
JOIN SALESLINE rol ON ro.SALESID = rol.SALESID AND ro.DATAAREAID = rol.DATAAREAID
JOIN SALESTABLE replacement_so ON ro.CUSTACCOUNT = replacement_so.CUSTACCOUNT AND ro.DATAAREAID = replacement_so.DATAAREAID
JOIN SALESLINE replacement_sl ON replacement_so.SALESID = replacement_sl.SALESID AND replacement_so.DATAAREAID = replacement_sl.DATAAREAID
WHERE ro.SALESTYPE = 3
AND rol.RETURNDISPOSITIONCODEID IN ('[YourReplaceCode1]', '[YourReplaceCode2]')
AND replacement_so.SALESTYPE = 1
AND replacement_so.CREATEDDATETIME > ro.CREATEDDATETIME
-- The join above is a basic example and must be replaced with your system's specific logic for linking returns to replacements.
AND ro.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
ro.RETURNITEMNUM AS ReturnCaseId,
'Replacement Item Shipped' AS ActivityName,
cpsj.CREATEDDATETIME AS EventTime,
cpsj.CREATEDBY AS ResponsibleUser,
NULL AS DispositionCode,
NULL AS ReturnReasonCode,
replacement_so.SALESORIGINID AS ReturnChannel,
cpsl.ITEMID AS ProductId
FROM SALESTABLE ro
JOIN SALESLINE rol ON ro.SALESID = rol.SALESID AND ro.DATAAREAID = rol.DATAAREAID
JOIN SALESTABLE replacement_so ON ro.CUSTACCOUNT = replacement_so.CUSTACCOUNT AND ro.DATAAREAID = replacement_so.DATAAREAID
JOIN CUSTPACKINGSLIPJOUR cpsj ON replacement_so.SALESID = cpsj.SALESID AND replacement_so.DATAAREAID = cpsj.DATAAREAID
JOIN CUSTPACKINGSLIPTRANS cpsl ON cpsj.PACKINGSLIPID = cpsl.PACKINGSLIPID AND cpsj.SALESID = cpsl.SALESID AND cpsj.DATAAREAID = cpsl.DATAAREAID
WHERE ro.SALESTYPE = 3
AND rol.RETURNDISPOSITIONCODEID IN ('[YourReplaceCode1]', '[YourReplaceCode2]')
AND replacement_so.SALESTYPE = 1
AND replacement_so.CREATEDDATETIME > ro.CREATEDDATETIME
-- The join above is a basic example and must be replaced with your system's specific logic for linking returns to replacements.
AND ro.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Closed' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.SALESSTATUS = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Cancelled' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.SALESSTATUS = 4 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'; Siap memulai?
Gunakan templat ini untuk mempermudah pengumpulan data dan mulai menemukan wawasan yang dapat membantu memperbaiki proses retur dan pengembalian dana. Mulai sekarang untuk mempercepat pemrosesan dan meningkatkan kepuasan pelanggan.
Atasi keterlambatan retur dan pengembalian dana, optimalkan proses Anda sekarang
Pangkas waktu siklus hingga 30% dan tingkatkan kepuasan pelanggan.
Tidak perlu kartu kredit. Penyiapan hanya perlu beberapa menit.