Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class API::V1::ComprasController < ApplicationController
- respond_to :json
- # before_filter :ensure_authenticated_user
- # before_filter :only => [:index] do |c| c.isAuthorized "BE_index_compras" end
- # before_filter :only => [:show] do |c| c.isAuthorized "BE_show_compras" end
- # before_filter :only => [:create] do |c| c.isAuthorized "BE_post_compras" end
- # before_filter :only => [:update] do |c| c.isAuthorized "BE_put_compras" end
- # before_filter :only => [:destroy] do |c| c.isAuthorized "BE_delete_compras" end
- PER_PAGE_RECORDS = 9
- has_scope :by_proveedor_id
- has_scope :by_sucursal_id
- has_scope :by_empresa_id
- has_scope :by_deposito_id
- has_scope :by_nro_factura
- has_scope :by_credito
- has_scope :by_pagado
- has_scope :by_tipo_credito_id
- has_scope :by_fecha_registro_before
- has_scope :by_fecha_registro_after
- has_scope :by_fecha_registro_on
- has_scope :by_total_gt
- has_scope :by_total_lt
- has_scope :by_total_eq
- has_scope :by_all_attributes, allow_blank: true
- has_scope :sucursal
- has_scope :by_codigo_barra
- def index
- tipo = params[:content_type]
- if tipo.eql? "pdf"
- #require 'compras_report.rb'
- @compras = apply_scopes(Compra).order(:fecha_registro).reverse_order
- pdf = ReportPdf.new(@compras)
- send_data pdf.render, filename: 'reporte_compras.pdf', type: 'application/pdf', disposition: 'attachment'
- else
- if tipo.eql? "retencion"
- @compras = Compra.find(params[:compra_id])
- pdf = RetencionReportPdf.new(@compras)
- send_data pdf.render, filename: 'retencion.pdf', type: 'application/pdf', disposition: 'attachment'
- else
- @compras = apply_scopes(Compra).page(params[:page]).per(PER_PAGE_RECORDS)
- if @compras.count > 0
- render json: @compras, each_serializer: CompraSerializer, meta: {total: apply_scopes(Compra).all.count, total_pages: @compras.num_pages}
- else
- render json: @compras, each_serializer: CompraSerializer
- end
- end
- end
- end
- def show
- respond_with Compra.find(params[:id])
- end
- def new
- respond_with Compra.new
- end
- def create
- #compra_inner_params.delete()
- logger.info "------ create params-----------------------"
- logger.info "#{compra_params.to_yaml}"
- logger.info "#{compra_inner_params.to_yaml}"
- @compra = Compra.new(compra_inner_params)
- detalles = []
- ubicaciones = []
- if(not params[:compra][:compra_detalles].nil?)
- params[:compra][:compra_detalles].each do |detalle_params|
- if detalle_params[:producto_id].nil?
- if ParametrosEmpresa.by_sucursal(params[:compra][:sucursal_id]).first.soporta_multimoneda
- moneda = params[:moneda_id]
- else
- moneda = ParametrosEmpresa.by_sucursal(params[:compra][:sucursal_id]).first.moneda_id
- end
- @productoNew = Producto.new(codigo_barra: detalle_params[:codigo_barra_producto],
- descripcion: detalle_params[:descripcion_producto],
- precio_compra: detalle_params[:precio_compra_producto],
- precio: detalle_params[:precio_producto],
- moneda_id: moneda,
- unidad: "u")
- begin
- @productoNew.save!
- rescue ActiveRecord::RecordInvalid => invalid
- logger.info "#{invalid.record.errors.to_yaml}"
- end
- @detalle_compra = CompraDetalle.new(producto_id: @productoNew.id,
- cantidad: detalle_params[:cantidad],
- precio_compra: detalle_params[:precio_compra],
- precio_venta: detalle_params[:precio_venta],
- precio_promedio: detalle_params[:precio_promedio])
- else
- @detalle_compra = CompraDetalle.new(producto_id: detalle_params[:producto_id],
- cantidad: detalle_params[:cantidad],
- precio_compra: detalle_params[:precio_compra],
- precio_venta: detalle_params[:precio_venta],
- precio_promedio: detalle_params[:precio_promedio])
- end
- # if !detalle_params[:ubicacion].nil?
- # end
- detalles.push(@detalle_compra)
- end
- end
- @compra.perro = "hola"
- @compra.compra_detalles = detalles
- @compra.guardar
- genera_movimiento = Usuario.where("id = ? ", current_user).first.isAuthorized("BE_genera_movimientos_caja")
- if (ParametrosEmpresa.default_empresa().first.soporta_cajas && genera_movimiento && !@compra.credito && @compra.pagado)
- logger.info "Caja: #{current_caja.id} TipoOperacion: #{Settings.cajas.tipos_operaciones.compra}, Compra: #{@compra}, Compra Moneda: #{@compra.moneda}"
- Operacion.generarOperacion(current_caja.id, Settings.cajas.tipos_operaciones.compra, nil, @compra.id, @compra.total, @compra.moneda.id, current_sucursal)
- end
- imprimirRetencion = params[:compra][:imprimir_retencion]
- logger.info '--------------------SIN RETEncion NEW--------------------'
- logger.info "#{imprimirRetencion}"
- if imprimirRetencion
- logger.info '--------------------SE INTENTA IMPRIMIR RETEncion--------------------'
- if @compra.retencioniva > 0
- logger.info '------------------------RETENCION DE IVA > 0-------------------'
- if current_caja_impresion
- logger.info '---------------Invocacion a @compra.imprimirRetencion current_caja_impresion---------------'
- @compra.imprimirRetencion current_caja_impresion
- else
- logger.info '------------no se soporta caja de impresion---------------------'
- end
- else
- logger.info '------------------------RETENCION DE IVA = 0-------------------'
- end
- end
- respond_with @compra
- end
- def update
- @compra = Compra.unscoped.find_by(id: params[:id])
- if @compra.nil?
- render json: {message: 'Resource not found'}, :status => :not_found
- else
- pagado = params[:compra][:pagado]
- genera_movimiento = Usuario.where("id = ? ",current_user).first.isAuthorized("BE_genera_movimientos_caja")
- logger.info "pagado guardado"
- logger.info "#{@compra.pagado}"
- logger.info "pagado params"
- logger.info "#{pagado}"
- if !@compra.pagado && pagado #Se pago
- logger.info "se pago"
- actualizarMovimiento = false
- Compra.transaction do
- @compra.update_attributes(compra_inner_params)
- if (ParametrosEmpresa.default_empresa().first.soporta_cajas && genera_movimiento && !@compra.credito)
- logger.info "Caja: #{current_caja.id} TipoOperacion: #{Settings.cajas.tipos_operaciones.compra}, Compra: #{@compra}, Compra Moneda: #{@compra.moneda}"
- Operacion.generarOperacion(current_caja.id, Settings.cajas.tipos_operaciones.compra, nil, @compra.id, @compra.total, @compra.moneda.id, current_sucursal)
- end
- end
- elsif !pagado && @compra.pagado #Se cancelo pago
- logger.info "se cancelo pago"
- actualizarMovimiento = false
- if genera_movimiento and ParametrosEmpresa.default_empresa().first.soporta_cajas
- Compra.transaction do
- op_anterior = Operacion.get_operacion_by_referencia(@compra, Settings.cajas.tipos_operaciones.compra)
- if(op_anterior)
- Operacion.reversarOperacion(op_anterior, current_sucursal)
- end
- end
- end
- else
- actualizarMovimiento = true
- end
- @compra.update_attributes(compra_inner_params)
- imprimirRetencion = params[:compra][:imprimir_retencion]
- logger.info '--------------------SIN RETEncion EDIT--------------------'
- logger.info "#{imprimirRetencion}"
- if imprimirRetencion
- logger.info '--------------------SE INTENTA IMPRIMIR RETEncion--------------------'
- if @compra.retencioniva > 0
- logger.info '------------------------RETENCION DE IVA > 0-------------------'
- if current_caja_impresion
- logger.info '---------------Invocacion a @compra.imprimirRetencion current_caja_impresion---------------'
- @compra.imprimirRetencion current_caja_impresion
- else
- logger.info '------------no se soporta caja de impresion---------------------'
- end
- else
- logger.info '------------------------RETENCION DE IVA = 0-------------------'
- end
- end
- if actualizarMovimiento and ParametrosEmpresa.default_empresa().first.soporta_cajas and genera_movimiento
- op_anterior = Operacion.get_operacion_by_referencia(@compra, Settings.cajas.tipos_operaciones.compra)
- if (op_anterior)
- Operacion.reversarOperacion(op_anterior, current_sucursal)
- Operacion.generarOperacion(current_caja.id, Settings.cajas.tipos_operaciones.compra, nil, @compra.id, @compra.total, @compra.moneda.id, current_sucursal)
- end
- end
- respond_with @compra
- end
- end
- def destroy
- @compra = Compra.find_by(id: params[:id])
- if @compra.nil?
- render json: {message: 'Resource not found'}, :status => :not_found
- else
- genera_movimiento = Usuario.where("id = ? ",current_user).first.isAuthorized("BE_genera_movimientos_caja")
- if genera_movimiento and ParametrosEmpresa.default_empresa().first.soporta_cajas
- Compra.transaction do
- op_anterior = Operacion.get_operacion_by_referencia(@compra, Settings.cajas.tipos_operaciones.compra)
- if(op_anterior)
- Operacion.reversarOperacion(op_anterior, current_sucursal)
- end
- end
- end
- @compra.eliminar
- respond_with @compra
- end
- end
- def actualizarStock(compra)
- #@detalles = CompraDetalle.where("compra_id = ?", compra.id)
- #@detalles.each do |det|
- # @producto_sucursal = ProductoSucursal.where("producto_id = ? AND sucursal_id = ?", det.producto_id, current_sucursal.id).first
- # @producto_sucursal.existencia = @producto_sucursal.existencia - det.cantidad
- # @producto_sucursal.save
- Producto.actualizar_stock(det.producto_id, current_sucursal.deposito_id,- det.cantidad)
- #end
- end
- def actualizarPrecios(compra)
- @detalles = CompraDetalle.where("compra_id = ?", compra.id)
- @detalles.each do |det|
- @precio = Precio.where("compra_detalle_id = ? ", det.id).first
- @precio.destroy
- end
- end
- def compra_params
- params.require(:compra).permit(:descuento, :total, :iva10, :iva5, :credito, :pagado,
- :cantidad_cuotas, :fecha_registro, :proveedor_id , :sucursal_id,
- :nro_factura, :tipo_credito_id, :deuda, :deposito_id, :retencioniva, :moneda_id,
- :cotizacion_id, :monto_cotizacion, :periodos,
- compra_detalles: [:producto_id, :cantidad, :precio_compra, :precio_venta, :precio_promedio, :ubicacion])
- end
- def compra_inner_params
- params.require(:compra).permit(:descuento, :total, :iva10, :iva5, :credito, :pagado,
- :cantidad_cuotas, :fecha_registro, :proveedor_id , :sucursal_id, :periodos,
- :nro_factura, :tipo_credito_id, :deuda, :deposito_id, :retencioniva, :moneda_id,
- :cotizacion_id, :monto_cotizacion)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement