Guest User

controller

a guest
Nov 26th, 2012
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 26.05 KB | None | 0 0
  1. class PenjualansController < ApplicationController
  2.  
  3.  
  4. def index_master
  5. file = "status"
  6. file_opened = File.new( file, 'r')
  7. status = []
  8. while (line = file_opened.gets)
  9. status << line
  10. end
  11. @start = status[0]
  12. @value = status[1]
  13.  
  14. if @start == "true\n"
  15. @penjualans = Penjualan.find(:all,
  16. :joins => :customer,
  17. :conditions=>["total < 10000000 and tanggal_transaksi = ? ", Date.today],
  18. :order => "id DESC")
  19.  
  20. if @penjualans.count < cookies[:limit].to_i
  21. val = @value.to_f / 100.to_f
  22. val = val * @penjualans.count
  23. val = val.to_i
  24. @penjualans = @penjualans[0..val]
  25. end
  26. else
  27. @penjualans = Penjualan.all( :joins => :customer, :conditions => ["tanggal_transaksi = ? ",Date.today] ,:order => "nama_kustomer ASC, id DESC")
  28. end
  29.  
  30. if params[:order].to_s == "id"
  31. @penjualans = @penjualans.sort do |a,b|
  32. [b.kode_transaksi] <=> [a.kode_transaksi]
  33. end
  34. @kasir = {}
  35. @total = 0
  36. @penjualans.each do |dk|
  37. if not dk.is_returned
  38. if @kasir.has_key?(dk.user.username)
  39. @kasir[dk.user.username] += dk.total
  40. else
  41. @kasir[dk.user.username] = dk.total
  42. end
  43. @total += dk.total
  44. end
  45. end
  46. render "index_id.html.haml"
  47. end
  48.  
  49. if params[:order].to_s == "kasir"
  50. @penjualans = @penjualans.sort do |a,b|
  51. [a.user.username,b.kode_transaksi] <=> [b.user.username, a.kode_transaksi]
  52. end
  53. @kasir = {}
  54. @total = 0
  55. @penjualans.each do |dk|
  56. if not dk.is_returned
  57. if @kasir.has_key?(dk.user.username)
  58. @kasir[dk.user.username] += dk.total
  59. else
  60. @kasir[dk.user.username] = dk.total
  61. end
  62. @total += dk.total
  63. end
  64. end
  65. render "index_kasir.html.haml"
  66. end
  67.  
  68. if params[:order].to_s == "kustomer"
  69. @penjualans = @penjualans.sort do |a,b|
  70. [a.customer.nama_kustomer,b.kode_transaksi] <=> [b.customer.nama_kustomer, a.kode_transaksi]
  71. end
  72. @customers = {}
  73. @total = 0
  74. @penjualans.each do |p|
  75. if not p.is_returned
  76. if @customers.has_key?(p.customer.nama_kustomer)
  77. @customers[p.customer.nama_kustomer] += p.total
  78. else
  79. @customers[p.customer.nama_kustomer] = p.total
  80. end
  81. @total += p.total
  82. end
  83. end
  84. render "index_kustomer.html.haml"
  85. end
  86.  
  87.  
  88. end
  89.  
  90. def backup_copy
  91. @penjualan = Penjualan.find(params[:id])
  92. @copy = params[:order].nil? ? "barang" : params[:order]
  93. end
  94.  
  95. def system
  96. if @active_user.username != "supri"
  97. redirect_to "/home"
  98. end
  99. file = "status"
  100. file_opened = File.new( file, 'r')
  101. status = []
  102. while (line = file_opened.gets)
  103. status << line
  104. end
  105. @start = status[0]
  106. @value = status[1]
  107. end
  108.  
  109. def system_process
  110. if @active_user.username != "supri"
  111. redirect_to "/home"
  112. end
  113. file = "status"
  114. content =""
  115. content = params[:start] == "on" ? "true\n" : "false\n"
  116. #content << params[:start] == "on" ? "true\n" : "false\n"
  117. content << params[:value]+"\n"
  118.  
  119. print content
  120.  
  121.  
  122. File.open(file, "w+") do |f|
  123. f.write(content)
  124. end
  125.  
  126. redirect_to "/home"
  127. end
  128.  
  129. def pembelian
  130. @barangs = Barang.all(:limit => cookies[:limit])
  131. @barang = Barang.new
  132. end
  133.  
  134.  
  135. def load_nota_barang_unlimited
  136. id = params[:barang_id]
  137.  
  138. d = DetilPenjualan.find(:all, :conditions => ['barang_id = ? ', id])
  139. @penjualans = []
  140. @jumlah_barang = []
  141. @list = []
  142.  
  143. d.each do |dp|
  144.  
  145. if not dp.penjualan.nil?
  146. @list << [dp.penjualan, dp.jumlah]
  147. end
  148. end
  149.  
  150. @list = @list.sort{ |list_a, list_b| list_a[0].tanggal_transaksi <=> list_b[0].tanggal_transaksi }
  151. @list = @list.reverse
  152. render "load_nota_barang.js.erb"
  153. end
  154.  
  155. def load_nota_barang
  156. id = params[:barang_id]
  157.  
  158. d = DetilPenjualan.find(:all, :conditions => ['barang_id = ? ', id])
  159. @penjualans = []
  160. @jumlah_barang = []
  161. @list = []
  162.  
  163. d.each do |dp|
  164.  
  165. if not dp.penjualan.nil? and dp.penjualan.tanggal_transaksi == Date.today
  166. @list << [dp.penjualan, dp.jumlah]
  167. end
  168. end
  169.  
  170. @list = @list.sort{ |list_a, list_b| list_a[0].tanggal_transaksi <=> list_b[0].tanggal_transaksi }
  171. @list = @list.reverse
  172. #@penjualans = @penjualans.sort_by(&:tanggal_transaksi).reverse
  173. #puts @penjualans.to_yaml
  174. #raise
  175. # ids = params[:id].split("_")
  176. # barang_id = params[:barang_id]
  177. # @penjualans = []
  178. # @jumlah_barang = []
  179. # ids.each do |i|
  180. # p = Penjualan.find(i)
  181. # p.detil_penjualans.each do |dp|
  182.  
  183. # if dp.barang_id.to_s == barang_id.to_s
  184. # @jumlah_barang << dp.jumlah
  185. # end
  186. # end
  187. # @penjualans << p
  188. # end
  189. end
  190.  
  191.  
  192.  
  193. def index_kustomer
  194. if DateTime.now < DateTime.now.change(:hour=>17)
  195. render :text => "ERROR"
  196. return
  197. end
  198. file = "status"
  199. file_opened = File.new( file, 'r')
  200. status = []
  201. while (line = file_opened.gets)
  202. status << line
  203. end
  204. @start = status[0]
  205. @value = status[1]
  206.  
  207. if @start == "true\n"
  208. @penjualans = Penjualan.find(:all,
  209. :joins => :customer,
  210. :conditions=>["total < 10000000 and tanggal_transaksi = ? ", Date.today],
  211. :order => "nama_kustomer ASC, id DESC")
  212.  
  213. if @penjualans.count < cookies[:limit].to_i
  214. val = @value.to_f / 100.to_f
  215. val = val * @penjualans.count
  216. val = val.to_i
  217. @penjualans = @penjualans[0..val]
  218. end
  219. else
  220. @penjualans = Penjualan.all( :joins => :customer, :conditions => ["tanggal_transaksi = ? ",Date.today] ,:order => "nama_kustomer ASC, id DESC")
  221. end
  222.  
  223. @customers = {}
  224. @total = 0
  225. @penjualans.each do |p|
  226. if @customers.has_key?(p.customer.nama_kustomer)
  227. @customers[p.customer.nama_kustomer] += p.total
  228. else
  229. @customers[p.customer.nama_kustomer] = p.total
  230. end
  231. @total += p.total
  232. end
  233.  
  234. respond_to do |format|
  235. format.html # index.html.erb
  236. format.json { render json: @penjualans }
  237. end
  238. end
  239.  
  240.  
  241. def index_id
  242. file = "status"
  243. file_opened = File.new( file, 'r')
  244. status = []
  245. while (line = file_opened.gets)
  246. status << line
  247. end
  248. @start = status[0]
  249. @value = status[1]
  250.  
  251. if @start == "true\n"
  252. @penjualans = Penjualan.find(:all,
  253. :joins => :user,
  254. :conditions=>["total < 10000000 and tanggal_transaksi = ? ", Date.today],
  255. :order => "id DESC")
  256.  
  257. if @penjualans.count < cookies[:limit].to_i
  258. val = @value.to_f / 100.to_f
  259. val = val * @penjualans.count
  260. val = val.to_i
  261. @penjualans = @penjualans[0..val]
  262. end
  263. else
  264. @penjualans = Penjualan.all( :joins => :user, :conditions => ["tanggal_transaksi = ? ",Date.today] ,:order => "username ASC, id DESC")
  265. end
  266.  
  267.  
  268. @kasir = {}
  269. @total = 0
  270. @penjualans.each do |dk|
  271. if @kasir.has_key?(dk.user.username)
  272. @kasir[dk.user.username] += dk.total
  273. else
  274. @kasir[dk.user.username] = dk.total
  275. end
  276. @total += dk.total
  277. end
  278.  
  279. respond_to do |format|
  280. format.html # index.html.erb
  281. format.json { render json: @penjualans }
  282. end
  283. end
  284.  
  285.  
  286. def index_kasir
  287. file = "status"
  288. file_opened = File.new( file, 'r')
  289. status = []
  290. while (line = file_opened.gets)
  291. status << line
  292. end
  293. @start = status[0]
  294. @value = status[1]
  295.  
  296. if @start == "true\n"
  297. @penjualans = Penjualan.find(:all,
  298. :joins => :user,
  299. :conditions=>["total < 10000000 and tanggal_transaksi = ? ", Date.today],
  300. :order => "username ASC, id DESC")
  301.  
  302. if @penjualans.count < cookies[:limit].to_i
  303. val = @value.to_f / 100.to_f
  304. val = val * @penjualans.count
  305. val = val.to_i
  306. @penjualans = @penjualans[0..val]
  307. end
  308. else
  309. @penjualans = Penjualan.all( :joins => :user, :conditions => ["tanggal_transaksi = ? ",Date.today] ,:order => "username ASC, id DESC")
  310. end
  311.  
  312.  
  313. @kasir = {}
  314. @total = 0
  315. @penjualans.each do |dk|
  316. if @kasir.has_key?(dk.user.username)
  317. @kasir[dk.user.username] += dk.total
  318. else
  319. @kasir[dk.user.username] = dk.total
  320. end
  321. @total += dk.total
  322. end
  323.  
  324. respond_to do |format|
  325. format.html # index.html.erb
  326. format.json { render json: @penjualans }
  327. end
  328. end
  329.  
  330. def index_barang
  331. penjualans = Penjualan.find(:all, :conditions => ["tanggal_transaksi = ?", Date.today])
  332. @barangs = {}
  333. @barang_id = {}
  334. penjualans.each do |p|
  335. p.detil_penjualans.each do |dp|
  336. if @barangs.has_key? (dp.barang.nama_barang)
  337. @barangs[dp.barang.nama_barang] << p.id
  338. else
  339. @barangs[dp.barang.nama_barang] = []
  340. @barangs[dp.barang.nama_barang] << p.id
  341. @barang_id[dp.barang.nama_barang] = []
  342. @barang_id[dp.barang.nama_barang] << dp.barang.id
  343. end
  344. end
  345.  
  346. end
  347. @barangs = Hash[@barangs.sort]
  348. @barang_id = Hash[@barang_id.sort]
  349. ##eliminate duplicate
  350. @barangs.each do |b|
  351. b = b.uniq
  352. end
  353.  
  354.  
  355. end
  356.  
  357. def show_index_barang_unlimited
  358.  
  359. end
  360. def index_barang_unlimited
  361. #puts params.to_yaml
  362. #startdate = Date.new(params["penjualan"]["startdate(1i)"].to_i, params["penjualan"]["startdate(2i)"].to_i,params["penjualan"]["startdate(3i)"].to_i)
  363. #enddate = Date.new(params["penjualan"]["enddate(1i)"].to_i, params["penjualan"]["enddate(2i)"].to_i,params["penjualan"]["enddate(3i)"].to_i)
  364. #raise
  365. #penjualans = Penjualan.find(:all, :conditions=>["tanggal_transaksi between ? and ? " ,startdate,enddate])
  366. #@barangs = {}
  367. #@barang_id = {}
  368. #penjualans.each do |p|
  369. #p.detil_penjualans.each do |dp|
  370. #if @barangs.has_key? (dp.barang.nama_barang)
  371. #@barangs[dp.barang.nama_barang] << p.id
  372. #else
  373. #@barangs[dp.barang.nama_barang] = []
  374. #@barangs[dp.barang.nama_barang] << p.id
  375. #@barang_id[dp.barang.nama_barang] = []
  376. #@barang_id[dp.barang.nama_barang] << dp.barang.id
  377. #end
  378. #end
  379.  
  380. #end
  381. #@barangs = Hash[@barangs.sort]
  382. #@barang_id = Hash[@barang_id.sort]
  383. ##eliminate duplicate
  384. #@barangs.each do |b|
  385. # b = b.uniq
  386. #end
  387.  
  388.  
  389. end
  390.  
  391. # GET /penjualans
  392. # GET /penjualans.json
  393. def index
  394. file = "status"
  395. file_opened = File.new( file, 'r')
  396. status = []
  397. while (line = file_opened.gets)
  398. status << line
  399. end
  400. @start = status[0]
  401. @value = status[1]
  402.  
  403. if @start == "true\n"
  404. @penjualans = Penjualan.find(:all, :conditions=>["total < 10000000"] ,:limit=>1000,:order => "id desc")
  405. if @penjualans.count < cookies[:limit].to_i
  406. val = @value.to_f / 100.to_f
  407. val = val * @penjualans.count
  408. val = val.to_i
  409. @penjualans = @penjualans[0..val]
  410. end
  411. else
  412. @penjualans = Penjualan.all(:limit=>1000,:order => "id desc")
  413. end
  414.  
  415. data_kasir = Penjualan.find(:all, :conditions=>["tanggal_transaksi = ?", Date.today])
  416. @kasir = {}
  417. @total = 0
  418. data_kasir.each do |dk|
  419. if @kasir.has_key?(dk.user.username)
  420. @kasir[dk.user.username] += dk.total
  421. else
  422. @kasir[dk.user.username] = dk.total
  423. end
  424. @total += dk.total
  425. end
  426.  
  427. respond_to do |format|
  428. format.html # index.html.erb
  429. format.json { render json: @penjualans }
  430. end
  431. end
  432.  
  433. def retur
  434.  
  435. end
  436.  
  437. def proses_retur
  438. @penjualan = Penjualan.find_by_kode_transaksi(params[:kode])
  439. if @penjualan.is_returned?
  440. flash[:error] = "Transaksi SUDAH di retur"
  441. flash.keep(:error)
  442. redirect_to :action => "retur"
  443. else
  444. Penjualan.transaction do
  445. @penjualan.is_returned = true
  446. @detil_penjualans = @penjualan.detil_penjualans
  447. @detil_penjualans.each do |d|
  448. barang = Barang.find(d.barang_id)
  449. barang.quantity += d.jumlah
  450. barang.save
  451. end
  452. @penjualan.save
  453. flash[:notice] = "Transaksi telah berhasil di retur"
  454. #flash.keep(:notice)
  455. redirect_to :action => "retur"
  456. end
  457. end
  458. end
  459. def report_limited
  460. if DateTime.now < DateTime.now.change(:hour=>17) && DateTime.now > DateTime.now.change(:hour=>8)
  461. flash[:notice] = "Error"
  462. flash.keep(:notice)
  463. render "report_fail.html.haml"
  464. else
  465.  
  466.  
  467. file = "status"
  468. file_opened = File.new( file, 'r')
  469. status = []
  470. while (line = file_opened.gets)
  471. status << line
  472. end
  473. @start = status[0]
  474. @value = status[1]
  475. respond_to do |format|
  476. format.html # index.html.erb
  477.  
  478. format.pdf do
  479. startdate = Date.today
  480. if DateTime.now < DateTime.now.change(:hour=>8)
  481. startdate -= 1.day
  482. end
  483. if @start == "true\n"
  484. @penjualans = Penjualan.find(:all,:order => "id", :conditions=>["tanggal_transaksi = ? and total < 10000000" ,startdate])
  485. val = @value.to_f / 100.to_f
  486. val = val * @penjualans.count
  487. val = val.to_i
  488. @penjualans = @penjualans[0..val]
  489. else
  490. @penjualans = Penjualan.find(:all,:order => "id", :conditions=>["tanggal_transaksi = ?" ,startdate])
  491. render "report_limited.pdf.prawn"
  492. end
  493. end
  494. end
  495. end
  496. end
  497.  
  498. def report
  499. file = "status"
  500. file_opened = File.new( file, 'r')
  501. status = []
  502. while (line = file_opened.gets)
  503. status << line
  504. end
  505. @start = status[0]
  506. @value = status[1]
  507. respond_to do |format|
  508. format.html # index.html.erb
  509. format.csv do
  510.  
  511. startdate = Date.new(params["penjualan"]["startdate(1i)"].to_i, params["penjualan"]["startdate(2i)"].to_i,params["penjualan"]["startdate(3i)"].to_i)
  512. enddate = Date.new(params["penjualan"]["enddate(1i)"].to_i, params["penjualan"]["enddate(2i)"].to_i,params["penjualan"]["enddate(3i)"].to_i)
  513. if @start == "true\n"
  514. @penjualans = Penjualan.find(:all,:order => "id", :conditions=>["tanggal_transaksi between ? and ? and total < 10000000" ,startdate,enddate])
  515. val = @value.to_f / 100.to_f
  516. val = val * @penjualans.count
  517. val = val.to_i
  518. @penjualans = @penjualans[0..val]
  519. else
  520. @penjualans = Penjualan.find(:all,:order => "id", :conditions=>["tanggal_transaksi between ? and ?" ,startdate,enddate])
  521. end
  522. generate_csv_headers("Laporan Penjualan #{startdate} - #{enddate}.csv")
  523. end
  524. format.pdf do
  525. startdate = Date.new(params["penjualan"]["startdate(1i)"].to_i, params["penjualan"]["startdate(2i)"].to_i,params["penjualan"]["startdate(3i)"].to_i)
  526. enddate = Date.new(params["penjualan"]["enddate(1i)"].to_i, params["penjualan"]["enddate(2i)"].to_i,params["penjualan"]["enddate(3i)"].to_i)
  527. if @start == "true\n"
  528. @penjualans = Penjualan.find(:all,:order => "id", :conditions=>["tanggal_transaksi between ? and ? and total < 10000000" ,startdate,enddate])
  529. val = @value.to_f / 100.to_f
  530. val = val * @penjualans.count
  531. val = val.to_i
  532. @penjualans = @penjualans[0..val]
  533. else
  534. @penjualans = Penjualan.find(:all,:order => "id", :conditions=>["tanggal_transaksi between ? and ?" ,startdate,enddate])
  535. end
  536. end
  537. end
  538. end
  539.  
  540. def report_retur
  541.  
  542. respond_to do |format|
  543. format.html # index.html.erb
  544. format.csv do
  545.  
  546. startdate = Date.new(params["penjualan"]["startdate(1i)"].to_i, params["penjualan"]["startdate(2i)"].to_i,params["penjualan"]["startdate(3i)"].to_i)
  547. enddate = Date.new(params["penjualan"]["enddate(1i)"].to_i, params["penjualan"]["enddate(2i)"].to_i,params["penjualan"]["enddate(3i)"].to_i)
  548. @penjualans = Penjualan.find(:all, :conditions=>["is_returned = ? and tanggal_transaksi between ? and ?" ,true,startdate,enddate])
  549. generate_csv_headers("Laporan Retur #{startdate} - #{enddate}.csv")
  550. end
  551. format.pdf do
  552. startdate = Date.new(params["penjualan"]["startdate(1i)"].to_i, params["penjualan"]["startdate(2i)"].to_i,params["penjualan"]["startdate(3i)"].to_i)
  553. enddate = Date.new(params["penjualan"]["enddate(1i)"].to_i, params["penjualan"]["enddate(2i)"].to_i,params["penjualan"]["enddate(3i)"].to_i)
  554. @penjualans = Penjualan.find(:all, :conditions=>["is_returned = ? and tanggal_transaksi between ? and ?" ,true, startdate,enddate])
  555. end
  556. end
  557. end
  558.  
  559. def report_rugilaba
  560. file = "status"
  561. file_opened = File.new( file, 'r')
  562. status = []
  563. while (line = file_opened.gets)
  564. status << line
  565. end
  566. @start = status[0]
  567. @value = status[1]
  568. respond_to do |format|
  569. format.html # index.html.erb
  570. format.csv do
  571.  
  572. startdate = Date.new(params["penjualan"]["startdate(1i)"].to_i, params["penjualan"]["startdate(2i)"].to_i,params["penjualan"]["startdate(3i)"].to_i)
  573. enddate = Date.new(params["penjualan"]["enddate(1i)"].to_i, params["penjualan"]["enddate(2i)"].to_i,params["penjualan"]["enddate(3i)"].to_i)
  574. if @start == "true\n"
  575. @penjualans = Penjualan.find(:all, :order => "id", :conditions=>["tanggal_transaksi between ? and ? and total < 10000000" ,startdate,enddate])
  576. val = @value.to_f / 100.to_f
  577. val = val * @penjualans.count
  578. val = val.to_i
  579. @penjualans = @penjualans[0..val]
  580. else
  581. @penjualans = Penjualan.find(:all,:order => "id", :conditions=>["tanggal_transaksi between ? and ?" ,startdate,enddate])
  582. end
  583. generate_csv_headers("Laporan Rugi Laba #{startdate} - #{enddate}.csv")
  584. end
  585. format.pdf do
  586. startdate = Date.new(params["penjualan"]["startdate(1i)"].to_i, params["penjualan"]["startdate(2i)"].to_i,params["penjualan"]["startdate(3i)"].to_i)
  587. enddate = Date.new(params["penjualan"]["enddate(1i)"].to_i, params["penjualan"]["enddate(2i)"].to_i,params["penjualan"]["enddate(3i)"].to_i)
  588. if @start == "true\n"
  589. @penjualans = Penjualan.find(:all, :order => "id", :conditions=>["tanggal_transaksi between ? and ? and total < 10000000" ,startdate,enddate])
  590. val = @value.to_f / 100.to_f
  591. val = val * @penjualans.count
  592. val = val.to_i
  593. @penjualans = @penjualans[0..val]
  594. else
  595. @penjualans = Penjualan.find(:all, :order => "id", :conditions=>["tanggal_transaksi between ? and ?" ,startdate,enddate])
  596. end
  597. end
  598. end
  599. end
  600.  
  601. def report_piutang
  602.  
  603. respond_to do |format|
  604. format.html # index.html.erb
  605. format.csv do
  606.  
  607. startdate = Date.new(params["penjualan"]["startdate(1i)"].to_i, params["penjualan"]["startdate(2i)"].to_i,params["penjualan"]["startdate(3i)"].to_i)
  608. enddate = Date.new(params["penjualan"]["enddate(1i)"].to_i, params["penjualan"]["enddate(2i)"].to_i,params["penjualan"]["enddate(3i)"].to_i)
  609. @penjualans = Penjualan.find(:all, :conditions=>["status_pembayaran = ? AND tanggal_transaksi between ? and ?" ,"HUTANG", startdate,enddate])
  610. generate_csv_headers("Laporan Piutang #{startdate} - #{enddate}.csv")
  611. end
  612. format.pdf do
  613. startdate = Date.new(params["penjualan"]["startdate(1i)"].to_i, params["penjualan"]["startdate(2i)"].to_i,params["penjualan"]["startdate(3i)"].to_i)
  614. enddate = Date.new(params["penjualan"]["enddate(1i)"].to_i, params["penjualan"]["enddate(2i)"].to_i,params["penjualan"]["enddate(3i)"].to_i)
  615. @penjualans = Penjualan.find(:all, :conditions=>["status_pembayaran = ? AND tanggal_transaksi between ? and ?" ,"HUTANG", startdate,enddate])
  616. end
  617. end
  618. end
  619.  
  620. # GET /penjualans/1
  621. # GET /penjualans/1.json
  622. def show
  623. @penjualan = Penjualan.find(params[:id])
  624. @copy = "Customer"
  625.  
  626. respond_to do |format|
  627. format.html # show.html.erb
  628. format.json { render json: @penjualan }
  629. end
  630. end
  631. def show_backup
  632. @penjualan = Penjualan.find(params[:id])
  633. @copy = "Backup"
  634.  
  635. render 'show.html.haml'
  636. end
  637. def show_merchant
  638. @penjualan = Penjualan.find(params[:id])
  639. @copy = "Merchant"
  640.  
  641. render 'show.html.haml'
  642. end
  643.  
  644.  
  645.  
  646. # GET /penjualans/new
  647. # GET /penjualans/new.json
  648. def new
  649. @penjualan = Penjualan.new
  650. @penjualan.kode_transaksi = "J"+ DateTime.now.strftime("%d%m%Y%H%M%S")+@active_user.id.to_s
  651. @customers = Customer.all(:limit => cookies[:limit], :order=>:kode_kustomer )
  652. @barangs = Barang.all(:limit => cookies[:limit] )
  653. respond_to do |format|
  654. format.html # new.html.erb
  655. format.json { render json: @penjualan }
  656. end
  657. end
  658.  
  659. # GET /penjualans/1/edit
  660. def edit
  661. @penjualan = Penjualan.find(params[:id])
  662. end
  663.  
  664. # POST /penjualans
  665. # POST /penjualans.json
  666. def create
  667. Penjualan.transaction do
  668. @penjualan = Penjualan.new(params[:penjualan])
  669.  
  670. @penjualan.user_id = @active_user.id
  671. @penjualan.ongkos = params[:ongkos]
  672. @penjualan.total_diskon = params[:total_discount]
  673. @penjualan.total = params[:grand_total]
  674. @penjualan.cash_total = params[:cash_total]
  675. @penjualan.kembali = params[:kembali]
  676. @penjualan.is_returned = false
  677.  
  678.  
  679. #check if it cash
  680. if params[:status_pembayaran] == "cash" || params[:status_pembayaran] == "kartu_kredit" || params[:status_pembayaran] == "kartu_debit"
  681. @penjualan.tanggal_bayar = DateTime.now
  682. @penjualan.status_pembayaran = "Cash"
  683. if params[:status_pembayaran] == "kartu_kredit"
  684. @penjualan.status_pembayaran = "Kartu Kredit"
  685. end
  686. if params[:status_pembayaran] == "kartu_debit"
  687. @penjualan.status_pembayaran = "Kartu Debit"
  688. end
  689. else
  690. @penjualan.status_pembayaran = "HUTANG"
  691. end
  692.  
  693. respond_to do |format|
  694. if @penjualan.save
  695.  
  696. detil_penjualan = []
  697.  
  698. #make detil penjualan first
  699. params[:barang].keys.each do |key|
  700. temp = DetilPenjualan.new
  701. temp.barang_id = params[:barang][key][:barang_id]
  702. temp.jumlah = params[:barang][key][:qty]
  703. temp.total = params[:barang][key][:total]
  704. temp.discount = params[:barang][key][:disc]
  705. temp.tambahan = params[:barang][key][:tambahan]
  706. temp.kode_mesin = params[:barang][key][:kode_mesin]
  707. temp.save
  708. tempbarang = temp.barang
  709. tempbarang.quantity -= temp.jumlah
  710. tempbarang.save
  711. detil_penjualan << temp
  712. end
  713. @penjualan.detil_penjualans = detil_penjualan
  714. @penjualan.save
  715.  
  716.  
  717. format.html { redirect_to @penjualan }
  718. format.json { render json: @penjualan, status: :created, location: @penjualan }
  719. else
  720.  
  721. @penjualan = Penjualan.find_by_kode_transaksi(@penjualan.kode_transaksi)
  722.  
  723. if @penjualan.nil?
  724.  
  725. @penjualan = Penjualan.new
  726. @penjualan.kode_transaksi = "J"+ DateTime.now.strftime("%d%m%Y%H%M%S")
  727. @customers = Customer.all(:limit => cookies[:limit], :order=>:kode_kustomer )
  728. @barangs = Barang.all(:limit => cookies[:limit] )
  729. format.html { render action: "new" }
  730. format.json { render json: @penjualan.errors, status: :unprocessable_entity }
  731. else
  732. format.html { redirect_to @penjualan }
  733. format.json { render json: @penjualan, status: :created, location: @penjualan }
  734. end
  735. end
  736. end
  737. end
  738. end
  739.  
  740. # PUT /penjualans/1
  741. # PUT /penjualans/1.json
  742. def update
  743. @penjualan = Penjualan.find(params[:id])
  744.  
  745. respond_to do |format|
  746. if @penjualan.update_attributes(params[:penjualan])
  747. format.html { redirect_to @penjualan, notice: 'Penjualan was successfully updated.' }
  748. format.json { head :no_content }
  749. else
  750. format.html { render action: "edit" }
  751. format.json { render json: @penjualan.errors, status: :unprocessable_entity }
  752. end
  753. end
  754. end
  755.  
  756. # DELETE /penjualans/1
  757. # DELETE /penjualans/1.json
  758. def destroy
  759. Penjualan.transaction do
  760. @penjualan = Penjualan.find(params[:id])
  761. @detil_penjualans = @penjualan.detil_penjualans
  762. @detil_penjualans.each do |detil_penjualan|
  763. detil_penjualan.destroy
  764. end
  765. @penjualan.destroy
  766. respond_to do |format|
  767. flash[:notice] = 'Transaksi telah dihapus'
  768. flash.keep(:notice)
  769. format.html { redirect_to :action => "index" }
  770. format.json { head :no_content }
  771. end
  772. end
  773. end
  774.  
  775.  
  776. def load_details
  777. p = Penjualan.find(params[:id])
  778. @detil_penjualans = p.detil_penjualans
  779. @is_returned = p.is_returned
  780. @ongkir = p.ongkos.to_i
  781. end
  782. def load_details_kode
  783. p = Penjualan.find(:all, :conditions => [ 'kode_transaksi = ? ', params[:kode]]).first
  784. @detil_penjualans = p.detil_penjualans
  785. @is_returned = p.is_returned
  786.  
  787.  
  788. render "load_details"
  789. end
  790.  
  791. def search
  792. q = params[:query]
  793. if q == "_"
  794. @detil_penjualans = Penjualan.all(:limit=>100)
  795. else
  796. @detil_penjualans = Penjualan.search_for(q)
  797. end
  798.  
  799. end
  800.  
  801.  
  802. def pelunasan
  803. @penjualans = Penjualan.find(:all, :limit=>cookies[:limit], :conditions=>["status_pembayaran = ?", "HUTANG"])
  804. end
  805.  
  806. def search_pelunasan
  807. q = params[:query]
  808. if q == "_"
  809. @detil_penjualans = Penjualan.all(:limit=>100, :conditions=>["status_pembayaran = ?", "HUTANG"])
  810. else
  811. @detil_penjualans = Penjualan.search_for(q, :conditions=>["status_pembayaran = ?", "HUTANG"])
  812. temp = @detil_penjualans[0..99]
  813. res = []
  814. temp.each do |t|
  815. if t.status_pembayaran == "HUTANG"
  816. res << t
  817. end
  818. end
  819. @detil_penjualans = res
  820. end
  821. end
  822.  
  823. def proses_pelunasan
  824. @penjualan = Penjualan.find(params[:id])
  825. @penjualan.status_pembayaran = "LUNAS"
  826. if @penjualan.save
  827. flash[:notice] = 'Pelunasan Transaksi Sukses'
  828. flash.keep(:notice)
  829. redirect_to :action=> "pelunasan"
  830. end
  831. end
  832.  
  833.  
  834.  
  835. end
Advertisement
Add Comment
Please, Sign In to add comment