def post(self, request, *args, **kwargs): self.object = None # Tirar . dos campos decimais req_post = request.POST.copy() for key in req_post: if ('venda' in key or 'custo' in key or 'estoque_minimo' in key or 'estoque_atual' in key): req_post[key] = req_post[key].replace('.', '') if 'EX:' in req_post['ncm']: ncm = req_post['ncm'][0:8] ex_start = req_post['ncm'].find('EX:') + 3 ex_end = req_post['ncm'].find(']') ex_tipi = req_post['ncm'][ex_start:ex_end] req_post['ncm'] = ncm + ex_tipi request.POST = req_post form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): self.object = form.save(commit=False) if self.object.controlar_estoque and form.cleaned_data['estoque_inicial'] > 0: # Gerar movimento de estoque inicial mov_inicial = EntradaEstoque() item_entrada = ItensMovimento() prod_estocado = ProdutoEstocado() mov_inicial.data_movimento = datetime.now().date() mov_inicial.quantidade_itens = 1 mov_inicial.tipo_movimento = u'3' mov_inicial.observacoes = '' mov_inicial.valor_total = round( self.object.venda * form.cleaned_data['estoque_inicial'], 2) if form.cleaned_data['fornecedor']: mov_inicial.fornecedor = Fornecedor.objects.get( id=form.cleaned_data['fornecedor']) if form.cleaned_data['local_dest']: mov_inicial.local_dest = form.cleaned_data['local_dest'] item_entrada.quantidade = form.cleaned_data['estoque_inicial'] item_entrada.valor_unit = self.object.venda item_entrada.subtotal = mov_inicial.valor_total prod_estocado.local = mov_inicial.local_dest prod_estocado.quantidade = form.cleaned_data['estoque_inicial'] self.object.estoque_atual = form.cleaned_data[ 'estoque_inicial'] self.object.save() mov_inicial.save() item_entrada.movimento_id = mov_inicial item_entrada.produto = self.object item_entrada.save() prod_estocado.produto = self.object prod_estocado.save() else: self.object.save() return self.form_valid(form) return self.form_invalid(form)
def post(self, request, *args, **kwargs): self.object = None # Tirar . dos campos decimais req_post = request.POST.copy() for key in req_post: if ('venda' in key or 'custo' in key or 'estoque_minimo' in key or 'estoque_atual' in key): req_post[key] = req_post[key].replace('.', '') if 'EX:' in req_post['ncm']: ncm = req_post['ncm'][0:8] ex_start = req_post['ncm'].find('EX:') + 3 ex_end = req_post['ncm'].find(']') ex_tipi = req_post['ncm'][ex_start:ex_end] req_post['ncm'] = ncm + ex_tipi request.POST = req_post form_class = self.get_form_class() form = self.get_form(form_class) acomodacao_form = ProdutoAcomodacaoFormSet(request.POST, prefix='acomodacao_form') cidade_form = ProdutoCidadeFormSet(request.POST, prefix='cidade_form') documento_form = DocumentoProdutoFormSet(request.POST, request.FILES, prefix='documento_form') formsets = [acomodacao_form, cidade_form] if form.is_valid(): self.object = form.save(commit=False) if self.object.controlar_estoque and form.cleaned_data[ 'estoque_inicial'] > 0: # Gerar movimento de estoque inicial mov_inicial = EntradaEstoque() item_entrada = ItensMovimento() prod_estocado = ProdutoEstocado() mov_inicial.data_movimento = datetime.now().date() mov_inicial.quantidade_itens = 1 mov_inicial.tipo_movimento = u'3' mov_inicial.observacoes = '' mov_inicial.valor_total = round( self.object.venda * form.cleaned_data['estoque_inicial'], 2) if form.cleaned_data['fornecedor']: mov_inicial.fornecedor = Fornecedor.objects.get( id=form.cleaned_data['fornecedor']) if form.cleaned_data['local_dest']: mov_inicial.local_dest = form.cleaned_data['local_dest'] item_entrada.quantidade = form.cleaned_data['estoque_inicial'] item_entrada.valor_unit = self.object.venda item_entrada.subtotal = mov_inicial.valor_total prod_estocado.local = mov_inicial.local_dest prod_estocado.quantidade = form.cleaned_data['estoque_inicial'] self.object.estoque_atual = form.cleaned_data[ 'estoque_inicial'] self.object.save() mov_inicial.save() item_entrada.movimento_id = mov_inicial item_entrada.produto = self.object item_entrada.save() prod_estocado.produto = self.object prod_estocado.save() else: if (all(formset.is_valid() for formset in formsets) and acomodacao_form.is_valid() and cidade_form.is_valid()): self.object.save() form.save_m2m() acomodacao_form.instance = self.object acom = acomodacao_form.save() cidade_form.instance = self.object cid = cidade_form.save() if documento_form.is_valid(): documentos = documento_form.save(commit=False) for documento in documentos: documento.save() self.object.documentos.add(documento) return self.form_valid(form) return self.form_invalid(form)