Advertisement
Sam1D

DetailLPPNP logic

Jun 14th, 2020
1,244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // DetailLPPNP logic by @Sam1Dz
  2.  
  3. const rawResponseData = [
  4.   {
  5.     idNilaiTransaksi: null,
  6.     idHeader: null,
  7.     idSyaratNilaiTransaksi: '1 ',
  8.     kode: '6 ',
  9.     urutan: 1,
  10.     uraian:
  11.       'Barang Impor yang bersangkutan merupakan suatu obyek transaksi jual beli;                                                                                       ',
  12.     uraianPfpd: null,
  13.     flagFreeText: null,
  14.   },
  15.   {
  16.     idNilaiTransaksi: null,
  17.     idHeader: null,
  18.     idSyaratNilaiTransaksi: '2 ',
  19.     kode: '6A',
  20.     urutan: 2,
  21.     uraian:
  22.       'Barang dikirim secara konsinyasi                                                                                                                                ',
  23.     uraianPfpd: null,
  24.     flagFreeText: null,
  25.   },
  26.   {
  27.     idNilaiTransaksi: null,
  28.     idHeader: null,
  29.     idSyaratNilaiTransaksi: '3 ',
  30.     kode: '6A',
  31.     urutan: 3,
  32.     uraian:
  33.       'Barang dikirim secara cuma - cuma (free of charge)                                                                                                              ',
  34.     uraianPfpd: null,
  35.     flagFreeText: null,
  36.   },
  37.   {
  38.     idNilaiTransaksi: null,
  39.     idHeader: null,
  40.     idSyaratNilaiTransaksi: '4 ',
  41.     kode: '6A',
  42.     urutan: 4,
  43.     uraian:
  44.       'Barang diimpor oleh perantara (intermediary) yang tidak membeli barang                                                                                          ',
  45.     uraianPfpd: null,
  46.     flagFreeText: null,
  47.   },
  48.   {
  49.     idNilaiTransaksi: null,
  50.     idHeader: null,
  51.     idSyaratNilaiTransaksi: '5 ',
  52.     kode: '6A',
  53.     urutan: 5,
  54.     uraian:
  55.       'Barang diimpor oleh anak cabang perusahaan yang bukan merupakan badan hukum terpisah                                                                            ',
  56.     uraianPfpd: null,
  57.     flagFreeText: null,
  58.   },
  59.   {
  60.     idNilaiTransaksi: null,
  61.     idHeader: null,
  62.     idSyaratNilaiTransaksi: '6 ',
  63.     kode: '6A',
  64.     urutan: 6,
  65.     uraian:
  66.       'Barang sewa (leasing contract)                                                                                                                                  ',
  67.     uraianPfpd: null,
  68.     flagFreeText: null,
  69.   },
  70.   {
  71.     idNilaiTransaksi: null,
  72.     idHeader: null,
  73.     idSyaratNilaiTransaksi: '7 ',
  74.     kode: '6A',
  75.     urutan: 7,
  76.     uraian:
  77.       'Barang bantuan dari luar negeri yang kepemilikannya di tangan pengirim barang                                                                                   ',
  78.     uraianPfpd: null,
  79.     flagFreeText: null,
  80.   },
  81.   {
  82.     idNilaiTransaksi: null,
  83.     idHeader: null,
  84.     idSyaratNilaiTransaksi: '8 ',
  85.     kode: '6A',
  86.     urutan: 8,
  87.     uraian:
  88.       'Lainnya, sebutkan....                                                                                                                                           ',
  89.     uraianPfpd: null,
  90.     flagFreeText: 'Y',
  91.   },
  92.   {
  93.     idNilaiTransaksi: null,
  94.     idHeader: null,
  95.     idSyaratNilaiTransaksi: '9 ',
  96.     kode: '6B',
  97.     urutan: 9,
  98.     uraian:
  99.       'Terdapat pembatasan-pembatasan atas pemanfaatan atau pemakaian barang impor;                                                                                    ',
  100.     uraianPfpd: null,
  101.     flagFreeText: null,
  102.   },
  103.   {
  104.     idNilaiTransaksi: null,
  105.     idHeader: null,
  106.     idSyaratNilaiTransaksi: '10',
  107.     kode: '6B',
  108.     urutan: 10,
  109.     uraian:
  110.       'Terdapat persyaratan atau pertimbangan yang diberlakukan terhadap transaksi atau nilai barang impor yang bersangkutan tidak dapat ditentukan nilai pabeannya;   ',
  111.     uraianPfpd: null,
  112.     flagFreeText: null,
  113.   },
  114.   {
  115.     idNilaiTransaksi: null,
  116.     idHeader: null,
  117.     idSyaratNilaiTransaksi: '11',
  118.     kode: '6B',
  119.     urutan: 11,
  120.     uraian:
  121.       'Terdapat proceeds ; kecuali proceeds tersebut sudah ditambahkan pada harga yang sebenarnya dibayar atau harga yang seharusnya dibayarkan;                       ',
  122.     uraianPfpd: null,
  123.     flagFreeText: null,
  124.   },
  125.   {
  126.     idNilaiTransaksi: null,
  127.     idHeader: null,
  128.     idSyaratNilaiTransaksi: '12',
  129.     kode: '6B',
  130.     urutan: 12,
  131.     uraian:
  132.       'Terdapat hubungan antara penjual dan pembeli yang mempengaruhi harga barang.                                                                                    ',
  133.     uraianPfpd: null,
  134.     flagFreeText: null,
  135.   },
  136.   {
  137.     idNilaiTransaksi: null,
  138.     idHeader: null,
  139.     idSyaratNilaiTransaksi: '13',
  140.     kode: '6C',
  141.     urutan: 13,
  142.     uraian:
  143.       'Terdapat biaya-biaya dan/atau nilai yang harus ditambahkan yang belum termasuk pada nilai transaksi berdasarkan bukti nyata atau data yang obyektif dan terukur;',
  144.     uraianPfpd: null,
  145.     flagFreeText: null,
  146.   },
  147.   {
  148.     idNilaiTransaksi: null,
  149.     idHeader: null,
  150.     idSyaratNilaiTransaksi: '22',
  151.     kode: '6 ',
  152.     urutan: 14,
  153.     uraian:
  154.       'Barang Impor yang bersangkutan bukan merupakan suatu obyek transaksi jual beli;                                                                                 ',
  155.     uraianPfpd: null,
  156.     flagFreeText: null,
  157.   },
  158.   {
  159.     idNilaiTransaksi: null,
  160.     idHeader: null,
  161.     idSyaratNilaiTransaksi: '23',
  162.     kode: '7',
  163.     urutan: 15,
  164.     uraian: 'Wajar',
  165.     uraianPfpd: null,
  166.     flagFreeText: null,
  167.   },
  168.   {
  169.     idNilaiTransaksi: null,
  170.     idHeader: null,
  171.     idSyaratNilaiTransaksi: '24',
  172.     kode: '7',
  173.     urutan: 16,
  174.     uraian: 'Tidak wajar',
  175.     uraianPfpd: null,
  176.     flagFreeText: null,
  177.   },
  178.   {
  179.     idNilaiTransaksi: null,
  180.     idHeader: null,
  181.     idSyaratNilaiTransaksi: '25',
  182.     kode: '7',
  183.     urutan: 17,
  184.     uraian: 'Tidak ditemukan data pembanding',
  185.     uraianPfpd: null,
  186.     flagFreeText: null,
  187.   },
  188.   {
  189.     idNilaiTransaksi: null,
  190.     idHeader: null,
  191.     idSyaratNilaiTransaksi: '26',
  192.     kode: '7A',
  193.     urutan: 18,
  194.     uraian:
  195.       'Nilai pabean yang diberitahukan kedapatan lebih rendah di atas 5% dari harga barang identik pada Database Nilai Pabean I',
  196.     uraianPfpd: null,
  197.     flagFreeText: null,
  198.   },
  199.   {
  200.     idNilaiTransaksi: null,
  201.     idHeader: null,
  202.     idSyaratNilaiTransaksi: '27',
  203.     kode: '7A',
  204.     urutan: 19,
  205.     uraian:
  206.       'Nilai pabean yang diberitahukan lebih rendah dari harga barang identik pada Database Nilai Pabean II',
  207.     uraianPfpd: null,
  208.     flagFreeText: null,
  209.   },
  210. ]
  211. const idHeader = 'da73adc5-cfa2-475d-80a5-bd49d587c62f'
  212. let stateSimulation = {
  213.   obyekTransaksiJualBeli: 'N',
  214.   obyekTransaksiWajar: 'N',
  215.   tableSatu: [],
  216.   tableDua: [],
  217.   tableTiga: [],
  218.   tableTujuh: [],
  219.   selectedRowTableSatu: [2, 4, 6],
  220.   selectedRowTableDua: [9, 11],
  221.   selectedRowTableTiga: [13],
  222.   selectedRowTableTujuh: [19],
  223. }
  224.  
  225. // Simulation API_PFPD_53
  226. const processData = rawData => {
  227.   console.log(rawData)
  228.  
  229.   for (let i = 0; i < rawData.length; i++) {
  230.     // Fixing Response
  231.     const idNilaiTransaksi = rawData[i].idNilaiTransaksi
  232.     const idHeader = rawData[i].idHeader
  233.     const idSyaratNilaiTransaksi = Number(
  234.       rawData[i].idSyaratNilaiTransaksi !== null
  235.         ? rawData[i].idSyaratNilaiTransaksi.replace(/\s/g, '')
  236.         : null
  237.     )
  238.     const kode =
  239.       rawData[i].kode !== null ? rawData[i].kode.replace(/\s/g, '') : null
  240.     const urutan = rawData[i].urutan
  241.     const uraian = rawData[i].uraian
  242.     const uraianPfpd = rawData[i].uraianPfpd
  243.     const flagFreeText =
  244.       rawData[i].flagFreeText !== null
  245.         ? rawData[i].flagFreeText.replace(/\s/g, '')
  246.         : null
  247.  
  248.     // Nomor 1
  249.     if (kode === '6' && idHeader !== null) {
  250.       if (idSyaratNilaiTransaksi === 1) {
  251.         stateSimulation.obyekTransaksiJualBeli = 'Y'
  252.       } else if (idSyaratNilaiTransaksi > 1) {
  253.         stateSimulation.obyekTransaksiJualBeli = 'N'
  254.       }
  255.     }
  256.  
  257.     // Nomor 2
  258.     if (kode === '6A') {
  259.       stateSimulation.tableSatu.push({
  260.         key: rawData[i].urutan,
  261.         idNilaiTransaksi,
  262.         idHeader,
  263.         idSyaratNilaiTransaksi,
  264.         kode,
  265.         urutan,
  266.         uraian,
  267.         uraianPfpd,
  268.         uraianFinal: uraianPfpd !== null ? `${uraian} ${uraianPfpd}` : uraian,
  269.         flagFreeText,
  270.       })
  271.       if (idHeader !== null) {
  272.         stateSimulation.selectedRowTableSatu.push(rawData[i].urutan)
  273.       }
  274.       if (flagFreeText === 'Y') {
  275.         if (uraianPfpd !== null) {
  276.           // Tampilkan URAIAN+URAIAN_PFPD
  277.         } else {
  278.           // Tampilkan URAIAN dan textbox untuk diinput oleh pfpd
  279.         }
  280.       }
  281.     }
  282.  
  283.     // Nomor 3
  284.     if (kode === '6B') {
  285.       stateSimulation.tableDua.push({
  286.         key: rawData[i].urutan,
  287.         idNilaiTransaksi,
  288.         idHeader,
  289.         idSyaratNilaiTransaksi,
  290.         kode,
  291.         urutan,
  292.         uraian,
  293.         uraianPfpd,
  294.         uraianFinal: uraianPfpd !== null ? `${uraian} ${uraianPfpd}` : uraian,
  295.         flagFreeText,
  296.       })
  297.       if (idHeader !== null) {
  298.         stateSimulation.selectedRowTableDua.push(rawData[i].urutan)
  299.       }
  300.       if (flagFreeText === 'Y') {
  301.         if (uraianPfpd !== null) {
  302.           // Tampilkan URAIAN+URAIAN_PFPD
  303.         } else {
  304.           // Tampilkan URAIAN dan textbox untuk diinput oleh pfpd
  305.         }
  306.       }
  307.     }
  308.  
  309.     // Nomor 4
  310.     if (kode === '6C') {
  311.       stateSimulation.tableTiga.push({
  312.         key: rawData[i].urutan,
  313.         idNilaiTransaksi,
  314.         idHeader,
  315.         idSyaratNilaiTransaksi,
  316.         kode,
  317.         urutan,
  318.         uraian,
  319.         uraianPfpd,
  320.         uraianFinal: uraianPfpd !== null ? `${uraian} ${uraianPfpd}` : uraian,
  321.         flagFreeText,
  322.       })
  323.       if (idHeader !== null) {
  324.         stateSimulation.selectedRowTableTiga.push(rawData[i].urutan)
  325.       }
  326.       if (flagFreeText === 'Y') {
  327.         if (uraianPfpd !== null) {
  328.           // Tampilkan URAIAN+URAIAN_PFPD
  329.         } else {
  330.           // Tampilkan URAIAN dan textbox untuk diinput oleh pfpd
  331.         }
  332.       }
  333.     }
  334.  
  335.     // Nomor 5 & 6
  336.     if (kode === '7' && idHeader !== null) {
  337.       if (idSyaratNilaiTransaksi === 1) {
  338.         stateSimulation.obyekTransaksiWajar = 'WAJAR'
  339.       } else if (idSyaratNilaiTransaksi === 24) {
  340.         stateSimulation.obyekTransaksiWajar = 'TIDAK WAJAR'
  341.       } else {
  342.         stateSimulation.obyekTransaksiWajar = 'TIDAK DITEMUKAN DATA PEMBANDING'
  343.       }
  344.     }
  345.  
  346.     // Nomor 7
  347.     if (kode === '7A') {
  348.       stateSimulation.tableTujuh.push({
  349.         key: rawData[i].urutan,
  350.         idNilaiTransaksi,
  351.         idHeader,
  352.         idSyaratNilaiTransaksi,
  353.         kode,
  354.         urutan,
  355.         uraian,
  356.         uraianPfpd,
  357.         uraianFinal: uraianPfpd !== null ? `${uraian} ${uraianPfpd}` : uraian,
  358.         flagFreeText,
  359.       })
  360.       if (idHeader !== null) {
  361.         stateSimulation.selectedRowTableTujuh.push(rawData[i].urutan)
  362.       }
  363.       if (flagFreeText === 'Y') {
  364.         if (uraianPfpd !== null) {
  365.           // Tampilkan URAIAN+URAIAN_PFPD
  366.         } else {
  367.           // Tampilkan URAIAN dan textbox untuk diinput oleh pfpd
  368.         }
  369.       }
  370.     }
  371.   }
  372. }
  373.  
  374. // Simulation API_PFPD_54
  375. const postData = data => {
  376.   const {
  377.     obyekTransaksiJualBeli,
  378.     obyekTransaksiWajar,
  379.     selectedRowTableSatu,
  380.     selectedRowTableDua,
  381.     selectedRowTableTiga,
  382.     selectedRowTableTujuh,
  383.     tableSatu,
  384.     tableDua,
  385.     tableTiga,
  386.     tableTujuh,
  387.   } = data
  388.   let postData = []
  389.  
  390.   const pushData = (
  391.     idHeader,
  392.     idNilaiTransaksi,
  393.     idSyaratNilaiTransaksi,
  394.     uraian
  395.   ) => {
  396.     postData.push({
  397.       idHeader,
  398.       idNilaiTransaksi,
  399.       idSyaratNilaiTransaksi,
  400.       uraian,
  401.     })
  402.   }
  403.  
  404.   // Nomor 1
  405.   if (obyekTransaksiJualBeli === 'Y') {
  406.     pushData(
  407.       idHeader,
  408.       null,
  409.       '1',
  410.       'Barang Impor yang bersangkutan merupakan suatu obyek transaksi jual beli'
  411.     )
  412.   } else if (obyekTransaksiJualBeli === 'N') {
  413.     pushData(
  414.       idHeader,
  415.       null,
  416.       '22',
  417.       'Barang Impor yang bersangkutan bukan merupakan suatu obyek transaksi jual beli'
  418.     )
  419.   }
  420.  
  421.   // Nomor 2
  422.   if (tableSatu.length !== 0) {
  423.     for (let i = 0; i < tableSatu.length; i++) {
  424.       if (selectedRowTableSatu.find(element => element === tableSatu[i].key)) {
  425.         pushData(
  426.           idHeader,
  427.           null,
  428.           tableSatu[i].idSyaratNilaiTransaksi.toString(),
  429.           tableSatu[i].uraianFinal
  430.         )
  431.       }
  432.     }
  433.   }
  434.  
  435.   // Nomor 3
  436.   if (tableDua.length !== 0) {
  437.     for (let i = 0; i < tableDua.length; i++) {
  438.       if (selectedRowTableDua.find(element => element === tableDua[i].key)) {
  439.         pushData(
  440.           idHeader,
  441.           null,
  442.           tableDua[i].idSyaratNilaiTransaksi.toString(),
  443.           tableDua[i].uraianFinal
  444.         )
  445.       }
  446.     }
  447.   }
  448.  
  449.   // Nomor 4
  450.   if (tableTiga.length !== 0) {
  451.     if (selectedRowTableTiga.find(element => element === tableTiga[0].key)) {
  452.       pushData(
  453.         idHeader,
  454.         null,
  455.         tableTiga[0].idSyaratNilaiTransaksi.toString(),
  456.         tableTiga[0].uraianFinal
  457.       )
  458.     }
  459.   }
  460.  
  461.   // Nomor 5 & 6 & 7
  462.   if (obyekTransaksiWajar === 'Y') {
  463.     pushData(idHeader, null, '23', 'Wajar')
  464.   } else if (obyekTransaksiWajar === 'U') {
  465.     pushData(idHeader, null, '25', 'Tidak Ditemukan Data Pembanding')
  466.   } else if (obyekTransaksiWajar === 'N') {
  467.     pushData(idHeader, null, '24', 'Tidak Wajar')
  468.  
  469.     if (tableTujuh.length !== 0) {
  470.       for (let i = 0; i < tableTujuh.length; i++) {
  471.         if (
  472.           selectedRowTableTujuh.find(element => element === tableTujuh[i].key)
  473.         ) {
  474.           pushData(
  475.             idHeader,
  476.             null,
  477.             tableTujuh[i].idSyaratNilaiTransaksi.toString(),
  478.             tableTujuh[i].uraianFinal
  479.           )
  480.         }
  481.       }
  482.     }
  483.   }
  484.  
  485.   return postData
  486. }
  487.  
  488. processData(rawResponseData)
  489. const result = postData(stateSimulation)
  490. console.log(result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement