Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 11.62 KB | None | 0 0
  1. class API::V1::ComprasController < ApplicationController
  2.   respond_to :json
  3.   # before_filter :ensure_authenticated_user
  4.   # before_filter :only => [:index]   do |c| c.isAuthorized "BE_index_compras" end
  5.   # before_filter :only => [:show]    do |c| c.isAuthorized "BE_show_compras" end
  6.   # before_filter :only => [:create]  do |c| c.isAuthorized "BE_post_compras" end
  7.   # before_filter :only => [:update]  do |c| c.isAuthorized "BE_put_compras" end
  8.   # before_filter :only => [:destroy] do |c| c.isAuthorized "BE_delete_compras" end
  9.  
  10.   PER_PAGE_RECORDS = 9
  11.  
  12.   has_scope :by_proveedor_id
  13.   has_scope :by_sucursal_id
  14.   has_scope :by_empresa_id
  15.   has_scope :by_deposito_id
  16.   has_scope :by_nro_factura
  17.   has_scope :by_credito
  18.   has_scope :by_pagado
  19.   has_scope :by_tipo_credito_id
  20.   has_scope :by_fecha_registro_before
  21.   has_scope :by_fecha_registro_after
  22.   has_scope :by_fecha_registro_on
  23.   has_scope :by_total_gt
  24.   has_scope :by_total_lt
  25.   has_scope :by_total_eq
  26.   has_scope :by_all_attributes, allow_blank: true
  27.   has_scope :sucursal
  28.   has_scope :by_codigo_barra
  29.  
  30.  
  31.   def index
  32.     tipo = params[:content_type]
  33.     if tipo.eql? "pdf"
  34.       #require 'compras_report.rb'
  35.       @compras = apply_scopes(Compra).order(:fecha_registro).reverse_order
  36.       pdf = ReportPdf.new(@compras)
  37.       send_data pdf.render, filename: 'reporte_compras.pdf', type: 'application/pdf', disposition: 'attachment'
  38.     else
  39.       if tipo.eql? "retencion"
  40.         @compras = Compra.find(params[:compra_id])
  41.         pdf = RetencionReportPdf.new(@compras)
  42.         send_data pdf.render, filename: 'retencion.pdf', type: 'application/pdf', disposition: 'attachment'
  43.       else
  44.         @compras = apply_scopes(Compra).page(params[:page]).per(PER_PAGE_RECORDS)
  45.  
  46.         if @compras.count > 0
  47.           render json: @compras, each_serializer: CompraSerializer, meta: {total: apply_scopes(Compra).all.count, total_pages: @compras.num_pages}
  48.         else
  49.           render json: @compras, each_serializer: CompraSerializer
  50.         end
  51.       end
  52.     end
  53.   end
  54.  
  55.   def show
  56.     respond_with Compra.find(params[:id])
  57.   end
  58.  
  59.   def new
  60.     respond_with Compra.new
  61.   end
  62.  
  63.   def create
  64.     #compra_inner_params.delete()
  65.  
  66.     logger.info "------ create params-----------------------"
  67.     logger.info "#{compra_params.to_yaml}"
  68.    
  69.     logger.info "#{compra_inner_params.to_yaml}"
  70.     @compra = Compra.new(compra_inner_params)
  71.  
  72.     detalles = []
  73.     ubicaciones = []
  74.     if(not params[:compra][:compra_detalles].nil?)
  75.       params[:compra][:compra_detalles].each do |detalle_params|
  76.         if detalle_params[:producto_id].nil?
  77.           if ParametrosEmpresa.by_sucursal(params[:compra][:sucursal_id]).first.soporta_multimoneda
  78.             moneda = params[:moneda_id]
  79.           else
  80.             moneda = ParametrosEmpresa.by_sucursal(params[:compra][:sucursal_id]).first.moneda_id
  81.           end
  82.           @productoNew = Producto.new(codigo_barra: detalle_params[:codigo_barra_producto],
  83.                                       descripcion: detalle_params[:descripcion_producto],
  84.                                       precio_compra: detalle_params[:precio_compra_producto],
  85.                                       precio: detalle_params[:precio_producto],
  86.                                       moneda_id: moneda,
  87.                                       unidad: "u")
  88.           begin
  89.             @productoNew.save!
  90.           rescue ActiveRecord::RecordInvalid => invalid
  91.             logger.info "#{invalid.record.errors.to_yaml}"
  92.           end
  93.  
  94.           @detalle_compra = CompraDetalle.new(producto_id: @productoNew.id,
  95.                                               cantidad: detalle_params[:cantidad],
  96.                                               precio_compra: detalle_params[:precio_compra],
  97.                                               precio_venta: detalle_params[:precio_venta],
  98.                                               precio_promedio: detalle_params[:precio_promedio])
  99.         else
  100.           @detalle_compra = CompraDetalle.new(producto_id: detalle_params[:producto_id],
  101.                                               cantidad: detalle_params[:cantidad],
  102.                                               precio_compra: detalle_params[:precio_compra],
  103.                                               precio_venta: detalle_params[:precio_venta],
  104.                                               precio_promedio: detalle_params[:precio_promedio])
  105.         end
  106.         # if !detalle_params[:ubicacion].nil?
  107.  
  108.         # end
  109.         detalles.push(@detalle_compra)
  110.       end
  111.     end
  112.     @compra.perro = "hola"
  113.     @compra.compra_detalles = detalles
  114.  
  115.     @compra.guardar
  116.  
  117.     genera_movimiento = Usuario.where("id = ? ", current_user).first.isAuthorized("BE_genera_movimientos_caja")
  118.  
  119.     if (ParametrosEmpresa.default_empresa().first.soporta_cajas && genera_movimiento && !@compra.credito && @compra.pagado)
  120.       logger.info "Caja: #{current_caja.id} TipoOperacion: #{Settings.cajas.tipos_operaciones.compra}, Compra: #{@compra}, Compra Moneda: #{@compra.moneda}"
  121.       Operacion.generarOperacion(current_caja.id, Settings.cajas.tipos_operaciones.compra, nil, @compra.id, @compra.total, @compra.moneda.id, current_sucursal)
  122.     end
  123.  
  124.     imprimirRetencion = params[:compra][:imprimir_retencion]
  125.     logger.info '--------------------SIN RETEncion NEW--------------------'
  126.     logger.info "#{imprimirRetencion}"
  127.     if imprimirRetencion
  128.       logger.info '--------------------SE INTENTA IMPRIMIR RETEncion--------------------'
  129.       if @compra.retencioniva > 0
  130.         logger.info '------------------------RETENCION DE IVA > 0-------------------'
  131.         if current_caja_impresion
  132.           logger.info '---------------Invocacion a @compra.imprimirRetencion current_caja_impresion---------------'
  133.           @compra.imprimirRetencion current_caja_impresion
  134.         else
  135.           logger.info '------------no se soporta caja de impresion---------------------'
  136.         end
  137.       else
  138.         logger.info '------------------------RETENCION DE IVA = 0-------------------'
  139.       end
  140.     end
  141.  
  142.     respond_with @compra
  143.   end
  144.  
  145.   def update
  146.     @compra = Compra.unscoped.find_by(id: params[:id])
  147.     if @compra.nil?
  148.       render json: {message: 'Resource not found'}, :status => :not_found
  149.     else
  150.       pagado = params[:compra][:pagado]
  151.       genera_movimiento = Usuario.where("id = ? ",current_user).first.isAuthorized("BE_genera_movimientos_caja")
  152.       logger.info "pagado guardado"
  153.       logger.info "#{@compra.pagado}"
  154.       logger.info "pagado params"
  155.       logger.info "#{pagado}"
  156.  
  157.       if !@compra.pagado && pagado #Se pago
  158.         logger.info "se pago"
  159.         actualizarMovimiento = false
  160.         Compra.transaction do
  161.           @compra.update_attributes(compra_inner_params)
  162.           if (ParametrosEmpresa.default_empresa().first.soporta_cajas && genera_movimiento && !@compra.credito)
  163.             logger.info "Caja: #{current_caja.id} TipoOperacion: #{Settings.cajas.tipos_operaciones.compra}, Compra: #{@compra}, Compra Moneda: #{@compra.moneda}"
  164.             Operacion.generarOperacion(current_caja.id, Settings.cajas.tipos_operaciones.compra, nil, @compra.id, @compra.total, @compra.moneda.id, current_sucursal)
  165.           end
  166.         end
  167.       elsif !pagado && @compra.pagado #Se cancelo pago
  168.         logger.info "se cancelo pago"
  169.         actualizarMovimiento = false
  170.         if genera_movimiento and ParametrosEmpresa.default_empresa().first.soporta_cajas
  171.           Compra.transaction do
  172.             op_anterior = Operacion.get_operacion_by_referencia(@compra, Settings.cajas.tipos_operaciones.compra)
  173.             if(op_anterior)
  174.               Operacion.reversarOperacion(op_anterior, current_sucursal)
  175.             end
  176.           end
  177.         end
  178.       else
  179.         actualizarMovimiento = true
  180.       end
  181.  
  182.       @compra.update_attributes(compra_inner_params)
  183.  
  184.       imprimirRetencion = params[:compra][:imprimir_retencion]
  185.       logger.info '--------------------SIN RETEncion EDIT--------------------'
  186.       logger.info "#{imprimirRetencion}"
  187.       if imprimirRetencion
  188.         logger.info '--------------------SE INTENTA IMPRIMIR RETEncion--------------------'
  189.         if @compra.retencioniva > 0
  190.           logger.info '------------------------RETENCION DE IVA > 0-------------------'
  191.           if current_caja_impresion
  192.             logger.info '---------------Invocacion a @compra.imprimirRetencion current_caja_impresion---------------'
  193.             @compra.imprimirRetencion current_caja_impresion
  194.           else
  195.             logger.info '------------no se soporta caja de impresion---------------------'
  196.           end
  197.         else
  198.           logger.info '------------------------RETENCION DE IVA = 0-------------------'
  199.         end
  200.       end
  201.  
  202.       if actualizarMovimiento and ParametrosEmpresa.default_empresa().first.soporta_cajas and genera_movimiento
  203.         op_anterior = Operacion.get_operacion_by_referencia(@compra, Settings.cajas.tipos_operaciones.compra)
  204.         if (op_anterior)
  205.           Operacion.reversarOperacion(op_anterior, current_sucursal)
  206.           Operacion.generarOperacion(current_caja.id, Settings.cajas.tipos_operaciones.compra, nil, @compra.id, @compra.total, @compra.moneda.id, current_sucursal)
  207.         end
  208.       end
  209.       respond_with @compra
  210.     end
  211.   end
  212.  
  213.   def destroy
  214.     @compra = Compra.find_by(id: params[:id])
  215.     if @compra.nil?
  216.       render json: {message: 'Resource not found'}, :status => :not_found
  217.     else
  218.       genera_movimiento = Usuario.where("id = ? ",current_user).first.isAuthorized("BE_genera_movimientos_caja")
  219.  
  220.       if genera_movimiento and ParametrosEmpresa.default_empresa().first.soporta_cajas
  221.         Compra.transaction do
  222.           op_anterior = Operacion.get_operacion_by_referencia(@compra, Settings.cajas.tipos_operaciones.compra)
  223.           if(op_anterior)
  224.             Operacion.reversarOperacion(op_anterior, current_sucursal)
  225.           end
  226.         end
  227.       end
  228.       @compra.eliminar
  229.       respond_with @compra
  230.     end
  231.   end
  232.  
  233.  
  234.   def actualizarStock(compra)
  235.     #@detalles = CompraDetalle.where("compra_id = ?", compra.id)
  236.     #@detalles.each do |det|
  237.     #   @producto_sucursal = ProductoSucursal.where("producto_id = ? AND sucursal_id = ?", det.producto_id, current_sucursal.id).first
  238.     #   @producto_sucursal.existencia =  @producto_sucursal.existencia - det.cantidad
  239.     #   @producto_sucursal.save
  240.     Producto.actualizar_stock(det.producto_id, current_sucursal.deposito_id,- det.cantidad)
  241.     #end
  242.   end
  243.  
  244.   def actualizarPrecios(compra)
  245.     @detalles = CompraDetalle.where("compra_id = ?", compra.id)
  246.     @detalles.each do |det|
  247.       @precio = Precio.where("compra_detalle_id = ? ", det.id).first
  248.       @precio.destroy
  249.     end
  250.   end
  251.  
  252.   def compra_params
  253.     params.require(:compra).permit(:descuento, :total, :iva10, :iva5, :credito, :pagado,
  254.                                    :cantidad_cuotas, :fecha_registro, :proveedor_id , :sucursal_id,
  255.                                    :nro_factura, :tipo_credito_id, :deuda, :deposito_id, :retencioniva, :moneda_id,
  256.                                    :cotizacion_id, :monto_cotizacion, :periodos,
  257.                                    compra_detalles: [:producto_id, :cantidad, :precio_compra, :precio_venta, :precio_promedio, :ubicacion])
  258.   end
  259.  
  260.   def compra_inner_params
  261.     params.require(:compra).permit(:descuento, :total, :iva10, :iva5, :credito, :pagado,
  262.                                    :cantidad_cuotas, :fecha_registro, :proveedor_id , :sucursal_id, :periodos,
  263.                                    :nro_factura, :tipo_credito_id, :deuda, :deposito_id, :retencioniva, :moneda_id,
  264.                                    :cotizacion_id, :monto_cotizacion)
  265.   end
  266. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement