def create_subgroup_level1(request, id_group): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) user_id = request.user.id if not verify_permission(8, user_id): raise exceptions.PermissionDenied( 'Você não tem permissões para realizar esta operação.') try: group = ProdGrp.objects.filter(instit=id_matriz, id=id_group).first() subgroup = ProdGrp(instit=id_matriz, niv=2, nv1=group.nv1, nv2=request.data.get('nv2'), nv1id=group.id, data=timezone.now()) subgroup.save() all_groups = ProdGrp.objects.filter(instit=id_matriz) all_groups_serialized = GrupoProdutoSerializer(all_groups, many=True) return Response(all_groups_serialized.data) except: raise exceptions.APIException( 'Não foi possível criar o subgrupo, tente novamente.')
def update(request, id): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) id_user = request.user.id if not verify_permission(141, id_user): raise exceptions.PermissionDenied( 'Você não tem permissões para realizar esta operação.') try: fabricante = Fabpro.objects.filter(instit=id_matriz, id=id).first() fabricante.marca = request.data.get('marca') fabricante.fabr = request.data.get('fabr') fabricante.save() fabricantes = Fabpro.objects.filter(instit=id_matriz) fabricantes_serialized = FabricanteProdutoSerializer(fabricantes, many=True) return Response(fabricantes_serialized.data) except: raise exceptions.APIException( 'Não foi possível atualizar o registro de fabricante, tente novamente.' )
def update(request, id): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) user_id = request.user.id if not verify_permission(147, user_id): raise exceptions.PermissionDenied( 'Você não tem permissões para realizar esta operação.') try: group = ProdGrp.objects.filter(instit=id_matriz, id=id).first() group.nv1 = request.data.get('nv1') group.nv2 = request.data.get('nv2') group.nv3 = request.data.get('nv3') group.save() all_groups = ProdGrp.objects.filter(instit=id_matriz) all_groups_serialized = GrupoProdutoSerializer(all_groups, many=True) return Response(all_groups_serialized.data) except: raise exceptions.APIException( 'Não foi possível atualizar o grupo, tente novamente.')
def activate(request, id): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) user_id = request.user.id if not verify_permission(144, user_id): raise exceptions.PermissionDenied( 'Você não tem permissões para realizar esta operação.') product = Produtos.objects.filter(id=id, id_matriz=id_matriz).first() product_item = ProdItens.objects.filter( id_produtos=product.id, id_matriz=id_matriz).first() if not product: raise exceptions.NotFound('Registro não encontrado, tente novamente.') try: product.ativo = 2 product.save() product_item.ativo = 2 product_item.save() return Response({'detail': 'O registro do produto foi ativado com sucesso.'}) except: raise exceptions.APIException( 'Não foi possível realizar a operação, tente novamente.')
def create(request): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) id_user = request.user.id if not verify_permission(111, id_user): raise exceptions.PermissionDenied( 'Você não tem permissões para realizar esta operação.') try: fabricante = Fabpro(instit=id_matriz, marca=request.data.get('marca'), fabr=request.data.get('fabr'), data_criacao=timezone.now()) fabricante.save() fabricantes = Fabpro.objects.filter(instit=id_matriz) fabricantes_serialized = FabricanteProdutoSerializer(fabricantes, many=True) return Response(fabricantes_serialized.data) except: raise exceptions.APIException( 'Não foi possível cadastrar o fabricante, tente novamente')
def deactivate(request, id): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) user_id = request.user.id if not verify_permission(143, user_id): raise exceptions.PermissionDenied( 'Você não tem permissões para realizar esta operação.') product = Produtos.objects.filter(id=id, id_matriz=id_matriz).first() product_item = ProdItens.objects.filter( id_produtos=product.id, id_matriz=id_matriz).first() if not product: raise exceptions.NotFound('Registro não encontrado, tente novamente.') try: product.ativo = 1 product.save() product_item.ativo = 1 product_item.save() produtos = Produtos.objects.filter( id_matriz=id_matriz).order_by('descr').order_by('-ativo') produtos_serialized = ProdutoSerializer(produtos, many=True) return Response(produtos_serialized.data) except: raise exceptions.APIException( 'Não foi possível realizar a operação, tente novamente.')
def find_all(request): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) try: aliquots = Aliquotas.objects.filter(instit=id_matriz) aliquots_serializer = AliquotaSerializer(aliquots, many=True) return Response(aliquots_serializer.data) except: raise exceptions.APIException( 'Não foi possível retornar as alíquotas dos produtos.')
def list_all(request): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) try: configuracoes = Configs.objects.get(pk=id_institution) configuracoes_serialized = ConfiguracoesInstituticaoSerializer( configuracoes) return Response(configuracoes_serialized.data) except: raise exceptions.APIException( 'Não foi possível carregar as configurações.')
def details(request, id): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) user_id = request.user.id if not verify_permission(152, user_id): raise exceptions.PermissionDenied( 'Você não tem permissões para realizar esta operação.') try: product = Produtos.objects.filter(id=id, id_matriz=id_matriz).first() product_serialized = ProdutoSerializer(product) return Response(product_serialized.data) except: raise exceptions.APIException( 'Não foi possível retornar os dados do produto.')
def get_all(request): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) id_user = request.user.id if not verify_permission(139, id_user): raise exceptions.PermissionDenied( 'Você não tem permissões para realizar esta operação.') try: fabricantes = Fabpro.objects.filter(instit=id_matriz) fabricantes_serialized = FabricanteProdutoSerializer(fabricantes, many=True) return Response(fabricantes_serialized.data) except: raise exceptions.NotFound('Não foi possível pesquisar os fabricantes.')
def get_all(request): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) user_id = request.user.id if not verify_permission(145, user_id): raise exceptions.PermissionDenied( 'Você não tem permissões para realizar esta operação.') try: groups = ProdGrp.objects.filter(instit=id_matriz) groups_serialized = GrupoProdutoSerializer(groups, many=True) return Response(groups_serialized.data) except: raise exceptions.APIException( 'Não foi possível retornar os dados dos grupos dos produtos.')
def get_all(request): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) user_id = request.user.id if not verify_permission(110, user_id): raise exceptions.PermissionDenied( 'Você não tem permissões para realizar esta operação.') try: produtos = Produtos.objects.filter( id_matriz=id_matriz).order_by('descr').order_by('-ativo') produtos_serialized = ProdutoSerializer(produtos, many=True) return Response(produtos_serialized.data) except: raise exceptions.APIException( 'Não foi possível pesquisar os produtos.')
def details(request, id): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) user_id = request.user.id if not verify_permission(145, user_id): raise exceptions.PermissionDenied( 'Você não tem permissões para realizar esta operação.') try: group = ProdGrp.objects.filter(instit=id_matriz, id=id).first() group_serialized = GrupoProdutoSerializer(group) return Response(group_serialized.data) except: raise exceptions.APIException( 'Não foi possível retornar os dados do grupo, tente novamente.')
def find_by_brand(request, brand): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) # id_user = request.user.id # if not verify_permission(110, user_id): # raise exceptions.PermissionDenied( # 'Você não tem permissões para realizar esta operação.') fabricante = Fabpro.objects.filter(instit=id_matriz, marca__contains=brand) if not fabricante: raise exceptions.NotFound( 'Nenhum fabricante foi encontrado com esta marca') fabricante_serialized = FabricanteProdutoSerializer(fabricante, many=True) return Response(fabricante_serialized.data)
def get_groups(request): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) try: groups = [] data = ProdGrp.objects.filter(instit=id_matriz).order_by('nv1').values( 'id', 'nv2').distinct() i = 0 for g in data: if len(groups) == 0: groups.append(dict(id=g['id'], nv2=g['nv2'])) while groups[i]['nv2'] != g['nv2']: groups.append(dict(id=g['id'], nv2=g['nv2'])) i += 1 return Response(groups) except: raise exceptions.APIException( 'Não foi possível retornar os dados dos grupos do produto.')
def get_sections(request): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) try: sections = [] groups = ProdGrp.objects.filter( instit=id_matriz).order_by('nv1').values('id', 'nv1').distinct() i = 0 for g in groups: if len(sections) == 0: sections.append(dict(id=g['id'], nv1=g['nv1'])) while sections[i]['nv1'] != g['nv1']: sections.append(dict(id=g['id'], nv1=g['nv1'])) i += 1 return Response(sections) except: raise exceptions.APIException( 'Não foi possível retornar os dados de seções de produto.')
def find_products(request, condition): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) estoque = [] try: produtos = Produtos.objects.filter( Q(id_matriz=id_matriz, descres__contains=condition) | Q(id_matriz=id_matriz, descr__contains=condition) | Q(id_matriz=id_matriz, codprod__contains=condition) ) produtos_serialized = ProdutoSerializer(produtos, many=True) for produto in produtos_serialized.data: dados = ProdItens.objects.filter(id_instit=id_institution, ativo=2, id_produtos=produto['id']).values( 'id', 'id_produtos', 'est_frente', 'prvenda1', 'prvenda2', 'prvenda3', 'locavel').get() estoque.append(dados) return Response({'produtos': produtos_serialized.data, 'estoque': estoque}) except: raise exceptions.APIException( 'Não foi possível encontrar os produtos.', status.HTTP_500_INTERNAL_SERVER_ERROR)
def create(request): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) product_code = generate_product_code(id_matriz) user_id = request.user.id if not verify_permission(5, user_id): raise exceptions.PermissionDenied( 'Você não tem permissões para realizar esta operação.') try: product = Produtos( id_matriz=id_matriz, codprod=product_code, ativo=request.data.get('ativo'), descr=request.data.get('descr'), descres=request.data.get('descres'), und=request.data.get('und'), grupo=request.data.get('grupo'), tam=request.data.get('tam'), larg=request.data.get('larg'), alt=request.data.get('alt'), cubag=request.data.get('cubag'), peso=request.data.get('peso'), codbarra=request.data.get('codbarra'), fabr=request.data.get('fabr'), forn=request.data.get('forn'), caract=request.data.get('caract'), ncm=request.data.get('ncm'), cest=request.data.get('cest'), desnf=request.data.get('desnf'), foto=request.data.get('foto'), usuatz=user_id ) product.save() except Exception: raise Exception # raise exceptions.APIException( # 'Não foi possível cadastrar o produto, tente novamente.') try: product_item = ProdItens( id_produtos=product.id, id_instit=id_institution, id_matriz=id_matriz, codprod=product_code, ativo=request.data.get('ativo'), bxest=request.data.get('bxest'), est_minimo=request.data.get('est_minimo'), est_fiscal=request.data.get('est_fiscal'), est_frente=request.data.get('est_frente'), est_dep1=request.data.get('est_dep1'), est_dep2=request.data.get('est_dep2'), est_dep3=request.data.get('est_dep3'), compra=request.data.get('compra'), frete=request.data.get('frete'), ipi=request.data.get('ipi'), aliq=request.data.get('aliq'), custo=request.data.get('custo'), lucro=request.data.get('lucro'), prvenda1=request.data.get('prvenda1'), prvenda2=request.data.get('prvenda2'), prvenda3=request.data.get('prvenda3'), locavel=request.data.get('locavel'), prloc=request.data.get('prloc'), vdatac=request.data.get('vdatac'), qtdatac=request.data.get('qtdatac'), pratac=request.data.get('pratac'), loc_frente=request.data.get('loc_frente'), loc_dep1=request.data.get('loc_dep1'), loc_dep2=request.data.get('loc_dep2'), loc_dep3=request.data.get('loc_dep3'), comissao_atv=request.data.get('comissao_atv'), comissao_val=request.data.get('comissao_val'), usuatz=user_id ) product_item.save() except Exception: raise Exception # raise exceptions.APIException( # 'Não foi possível cadastrar os itens do produto, tente novamente.') return Response({'detail': 'Cadastro feito com sucesso.', 'product_id': product.id})
def update(request, id): id_institution = request.user.instit_id id_matriz = search_matriz(id_institution) user_id = request.user.id if not verify_permission(144, user_id): raise exceptions.PermissionDenied( 'Você não tem permissões para realizar esta operação.') try: product = Produtos.objects.get(id=id, id_matriz=id_matriz) product.ativo = request.data.get('ativo') product.descr = request.data.get('descr') product.descres = request.data.get('descres') product.und = request.data.get('und') product.grupo = request.data.get('grupo') product.tam = request.data.get('tam') product.larg = request.data.get('larg') product.alt = request.data.get('alt') product.cubag = request.data.get('cubag') product.peso = request.data.get('peso') product.codbarra = request.data.get('codbarra') product.fabr = request.data.get('fabr') product.forn = request.data.get('forn') product.caract = request.data.get('caract') product.ncm = request.data.get('ncm') product.cest = request.data.get('cest') product.desnf = request.data.get('desnf') product.foto = request.data.get('foto') product.usuatz = user_id product.save() except: raise exceptions.APIException( 'Não foi possível cadastrar o produto, tente novamente.') try: product_item = ProdItens.objects.get( id_produtos=id, id_matriz=id_matriz) product_item.ativo = request.data.get('ativo') product_item.bxest = request.data.get('bxest') product_item.est_minimo = request.data.get('est_minimo') product_item.est_fiscal = request.data.get('est_fiscal') product_item.est_frente = request.data.get('est_frente') product_item.est_dep1 = request.data.get('est_dep1') product_item.est_dep2 = request.data.get('est_dep2') product_item.est_dep3 = request.data.get('est_dep3') product_item.compra = request.data.get('compra') product_item.frete = request.data.get('frete') product_item.ipi = request.data.get('ipi') product_item.aliq = request.data.get('aliq') product_item.custo = request.data.get('custo') product_item.lucro = request.data.get('lucro') product_item.prvenda1 = request.data.get('prvenda1') product_item.prvenda2 = request.data.get('prvenda2') product_item.prvenda3 = request.data.get('prvenda3') product_item.locavel = request.data.get('locavel') product_item.prloc = request.data.get('prloc') product_item.vdatac = request.data.get('vdatac') product_item.qtdatac = request.data.get('qtdatac') product_item.pratac = request.data.get('pratac') product_item.loc_frente = request.data.get('loc_frente') product_item.loc_dep1 = request.data.get('loc_dep1') product_item.loc_dep2 = request.data.get('loc_dep2') product_item.loc_dep3 = request.data.get('loc_dep3') product_item.comissao_atv = request.data.get('comissao_atv') product_item.comissao_val = request.data.get('comissao_val') product_item.usuatz = user_id product_item.save() except: raise exceptions.APIException( 'Não foi possível cadastrar os itens do produto, tente novamente.') return Response({'detail': 'Registro atualizado com sucesso.'})