Skip to content

Instantly share code, notes, and snippets.

@rafaeldo
Created September 18, 2018 03:46
Show Gist options
  • Save rafaeldo/d89f8db50653585ab7e747788eb5262e to your computer and use it in GitHub Desktop.
Save rafaeldo/d89f8db50653585ab7e747788eb5262e to your computer and use it in GitHub Desktop.
<template>
<v-container>
<v-card class="elevation-20">
<!-- Cabeçalho -->
<Cabecalho
@date="pegarData"
@cliente="pegarCliente" />
<!-- Movimentacao -->
<Movimentacao
@saldoVazio="atualizaSaldo"
@deuZeroSubtotal="atualizaSubtotal" />
<Footer />
<!-- Observação -->
<v-layout v-if="!saldoVazio" class="ma-4" row wrap>
<v-flex class="text-xs-center" xs12>
<v-text-field
solo
hide-details
dark
v-model="obs"
clearable
placeholder="Faça alguma anotação a respeito deste showroom (obrigatório)."
multi-line
required></v-text-field>
</v-flex>
</v-layout>
<!-- Botão Finalizar -->
<v-layout v-if="!saldoVazio" class="ma-4" row wrap>
<v-flex class="text-xs-center" xs12>
<v-btn
@click="enviarPedido"
:disabled="proibidoEmitirPedido"
class="primary white--text elevation-0">
GERAR PEDIDO
</v-btn>
</v-flex>
</v-layout>
</v-card>
</v-container>
</template>
<script>
import cloneDeep from 'lodash.clonedeep'
import Cabecalho from '@/components/Showroom/Partes/Cabecalho'
import Movimentacao from '@/components/Showroom/Partes/Movimentacao'
import traduzTamanhoInverso from '@/helper-fns/traduzTamanhoInverso'
export default {
components: {
Cabecalho,
Movimentacao
},
data () {
return {
date: null,
cliente: null,
obs: null,
saldoVazio: true,
subTotalAlgumVazio: false
}
},
methods: {
pegarData (date) {
this.date = date
this.$store.dispatch('showroom/salvarProps', {
tipo: 'date',
date
})
},
pegarCliente (cliente) {
this.cliente = cliente
this.$store.dispatch('showroom/salvarProps', {
tipo: 'cliente',
cliente
})
},
enviaObsFirebase () {
this.$store.dispatch('showroom/salvarProps', {
tipo: 'obs',
obs: this.obs
})
},
atualizaSaldo (boolean) {
this.saldoVazio = boolean
},
atualizaSubtotal (boolean) {
this.subTotalAlgumVazio = boolean
},
procuraProdutoPorModelo (modelo) {
return this.$store.getters.procuraProdutoPorModelo(modelo)
},
traduzProdutosShowroomParaPedido () {
let showroomAtual = cloneDeep(this.showroomAtual)
let arrayFinal = []
for (let modelo in showroomAtual) {
let procuraModelo = this.procuraProdutoPorModelo(modelo)
let valor = procuraModelo.valor
let modId = procuraModelo.id
for (let cor in showroomAtual[modelo]) {
let objProduto = {
cor: cor.trim().replace(/ /g, '').toLowerCase(),
g: 0,
gg: 0,
ggg: 0,
gggg: 0,
ggggg: 0,
h: 0,
hh: 0,
hhh: 0,
m: 0,
modelo: modelo.trim().replace(/ /g, '').toUpperCase(),
modeloId: modId,
p: 0,
pp: 0,
ppp: 0,
valor: valor
}
for (let tam in showroomAtual[modelo][cor]) {
let tamanhoTraduzido = traduzTamanhoInverso(tam)
objProduto[tamanhoTraduzido] = showroomAtual[modelo][cor][tam]
}
arrayFinal.push(objProduto)
}
}
return arrayFinal
},
enviarPedido () {
let objPedido = {}
let produtos = this.traduzProdutosShowroomParaPedido()
objPedido = {
showroom: true,
date: this.date,
tipo: 'Pronta Entrega',
cliente: this.cliente,
produtos,
taxacomissao: this.taxaComissao,
obs: this.obs
}
this.$store.dispatch('criarPedido', objPedido)
}
},
computed: {
proibidoEmitirPedido () {
if (!this.subTotalAlgumVazio && this.obs !== null && this.obs !== '') {
return false
}
return true
},
showroomAtual () {
return this.$store.getters['showroom/reorganizaShowroomAtual']
},
taxaComissao () {
return this.$store.getters.taxaComissaoEntrega
},
formValido () {
if (this.cliente !== null &&
this.cliente !== '' &&
this.date !== null &&
this.date !== '' &&
this.obs !== null &&
this.obs !== '' &&
!this.saldoVazio &&
!this.subTotalAlgumVazio &&
Object.keys(this.showroomAtual).length > 0) {
return true
}
return false
}
},
created () {
this.$store.dispatch('showroom/pegarTodosAtual')
this.$store.dispatch('showroom/pegarLog')
this.$store.dispatch('showroom/pegarTodosDados')
}
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment