selimppc

SP inv to invoice

Jul 5th, 2015
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.01 KB | None | 0 0
  1. USE `unisol_dev2`$$
  2.  
  3. DROP PROCEDURE IF EXISTS `sp_inv_to_invoice`$$
  4.  
  5. CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_inv_to_invoice`(
  6. param_grn_id INT(11),
  7. param_user_id INT(11)
  8. )
  9. BEGIN
  10. -- DECLARE var_year_id INT;
  11. DECLARE var_last_voucher_head_id, v_voucher_head_id, var_year_id, var_trn_last_no, var_trn_increment INT;
  12. -- DECLARE var_trn_last_no INT;
  13. -- DECLARE var_trn_increment INT;
  14. DECLARE var_trn_number VARCHAR(12);
  15. DECLARE v_netamt, v_taxamt DECIMAL(20,5);
  16. DECLARE v_suppgorup, v_subacc, v_acccode VARCHAR(50);
  17.  
  18. SELECT last_number, increment INTO var_trn_last_no, var_trn_increment FROM acc_trn_no_setup WHERE `code` = 'AP--';
  19. SET var_trn_last_no = var_trn_last_no + var_trn_increment;
  20. SET var_trn_number = CONCAT('AP--', LPAD(var_trn_last_no, 8, 0));
  21. UPDATE acc_trn_no_setup SET last_number = var_trn_last_no WHERE `code` = 'AP--';
  22.  
  23. SELECT id INTO var_year_id FROM `year` WHERE title = YEAR(CURRENT_TIMESTAMP);
  24.  
  25. INSERT INTO acc_voucher_head(`date`, year_id, `period`, `status`, created_by, created_at, `voucher_number`, reference, `type`)
  26. SELECT CURRENT_TIMESTAMP, var_year_id, MONTH(CURRENT_TIMESTAMP), 'open', param_user_id, CURRENT_TIMESTAMP,
  27. var_trn_number, CONCAT('Invoiced for GRN number ',var_trn_number), 'account-payable'
  28. FROM inv_grn_head igh
  29. WHERE igh.id = param_grn_id AND `status` = 'Confirmed'
  30. ;
  31.  
  32.  
  33. SET var_last_voucher_head_id = LAST_INSERT_ID();
  34. IF var_last_voucher_head_id > 0 THEN
  35. -- Debit entry
  36. INSERT INTO acc_voucher_detail(acc_voucher_head_id, acc_chart_of_accounts_id, prime_amount,
  37. base_amount, created_by, created_at, inv_supplier_id)
  38. SELECT var_last_voucher_head_id, e.id, CONVERT(b.receive_quantity, DECIMAL) * CONVERT(b.cost_price, DECIMAL),
  39. CONVERT(b.row_amount, DECIMAL), param_user_id, CURRENT_TIMESTAMP, a.inv_supplier_id
  40. FROM inv_grn_head a
  41. JOIN inv_grn_detail b ON b.inv_grn_head_id = a.id AND a.status = 'Confirmed'
  42. JOIN `inv_supplier` c ON c.id = a.inv_supplier_id
  43. JOIN acc_codesparam d ON CONVERT(d.type USING utf8) = CONVERT('Supplier Group' USING utf8)
  44. AND CONVERT(d.code USING utf8) = CONVERT(c.group_code USING utf8)
  45. JOIN acc_chart_of_accounts e ON CONVERT(e.account_code USING utf8) = CONVERT(d.account_code USING utf8)
  46. WHERE a.id = param_grn_id
  47. -- group by b.inv_grn_head_id
  48. ;
  49.  
  50. -- Credit entry
  51. /*INSERT INTO acc_voucher_detail(acc_voucher_head_id, acc_chart_of_accounts_id, prime_amount, base_amount,
  52. created_by, created_at, inv_supplier_id)
  53. SELECT var_last_voucher_head_id, e.id, 0 - SUM(CONVERT(b.receive_quantity,DECIMAL) * CONVERT(b.cost_price,DECIMAL)),
  54. 0 - SUM(CONVERT(b.row_amount,DECIMAL)), param_user_id, CURRENT_TIMESTAMP, a.inv_supplier_id
  55. FROM inv_grn_head a
  56. JOIN inv_grn_detail b ON b.inv_grn_head_id = a.id AND a.status = 'Confirmed'
  57. JOIN `inv_supplier` c ON c.id = a.inv_supplier_id
  58. JOIN acc_codesparam d ON CONVERT(d.type USING utf8) = CONVERT('Supplier Group' USING utf8)
  59. AND CONVERT(d.code USING utf8) = CONVERT(c.group_code USING utf8)
  60. JOIN acc_chart_of_accounts e ON CONVERT(e.account_code USING utf8) = CONVERT(d.account_code USING utf8)
  61. WHERE a.id = param_grn_id
  62. -- GROUP BY b.inv_grn_head_id
  63. ;
  64. */
  65. /*set v_voucher_head_id = 123;
  66. set v_netamt = 1234 ;
  67. set v_taxamt = 20.25;
  68. set v_suppgorup = 'eee';
  69. set v_subacc = 'rrr';
  70. set v_acccode = 'ttt';*/
  71.  
  72. SELECT IFNULL(a.tax_amount,0) AS v_taxamt, a.amount, b.group_code, a.inv_supplier_id, e.id
  73. INTO v_taxamt, v_netamt, v_suppgorup, v_subacc, v_acccode
  74. FROM inv_grn_head a
  75. INNER JOIN inv_supplier b ON a.inv_supplier_id = b.id
  76. -- LEFT JOIN acc_codesparam c ON CONVERT(c.type USING utf8) = CONVERT('Supplier Group' USING utf8)
  77. -- AND CONVERT(c.code USING utf8) = CONVERT(b.group_code USING utf8)
  78. JOIN acc_codesparam d ON CONVERT(d.type USING utf8) = CONVERT('Supplier Group' USING utf8)
  79. AND CONVERT(d.code USING utf8) = CONVERT(b.group_code USING utf8)
  80. JOIN acc_chart_of_accounts e ON CONVERT(e.account_code USING utf8) = CONVERT(d.account_code USING utf8)
  81. WHERE a.id = param_grn_id;
  82.  
  83. INSERT INTO acc_voucher_detail(acc_voucher_head_id, inv_supplier_id, prime_amount, base_amount,
  84. note, created_at, created_by, acc_chart_of_accounts_id)
  85. VALUES(var_last_voucher_head_id, v_subacc, 0-v_netamt, 0-(v_netamt),
  86. 'Receiveable Credit automatic', CURRENT_TIMESTAMP, param_user_id, v_acccode);
  87.  
  88. -- IF v_taxamt<>0 THEN -- 2 If tax amount is not zero then credit account will enter.
  89. -- INSERT INTO am_voucherdetail(am_vouchernumber,am_accountcode,am_subacccode,am_currency,am_exchagerate,am_primeamt,am_baseamt,am_branch,am_note,inserttime,insertuser)
  90. -- VALUES(v_voucher,v_acctax,'',v_currency,v_exchange,v_taxamt,(v_exchange*v_taxamt),v_branch,'Inventory Credit automatic',CURRENT_TIMESTAMP,p_User);
  91. -- END IF; -- 2
  92.  
  93. UPDATE inv_grn_head SET `status` = 'Invoiced' WHERE id = param_grn_id AND `status` = 'Confirmed';
  94.  
  95. CALL sp_acc_voucherpost(var_last_voucher_head_id, param_user_id);
  96. END IF;
  97. END$$
  98.  
  99. DELIMITER ;
Advertisement
Add Comment
Please, Sign In to add comment