Last active
July 28, 2021 19:40
-
-
Save pinhopro/d0e0189a88c1916144053fd1ec9ece89 to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Available variables: | |
// - Machine | |
// - interpret | |
// - assign | |
// - send | |
// - sendParent | |
// - spawn | |
// - raise | |
// - actions | |
// - XState (all XState exports) | |
const fetchMachine = Machine({ | |
id: "negociacao_venda", | |
initial: "idle", | |
context: { | |
tem_multa: true | |
}, | |
states: { | |
idle: { | |
on: { | |
CRIA_NOVA_OFERTA_EXCLUSIVA_PARA_COMPRADOR: "Aguarda_comprador_aceitar_oferta", | |
CHATBOT_CRIA_NOVA_OFERTA_EXCLUSIVA_PARA_COMPRADOR: "Aguarda_comprador_aceitar_oferta" | |
} | |
}, | |
Aguarda_comprador_aceitar_oferta: { | |
entry: ["gera_link_para_oferta"], | |
on: { | |
COMPRADOR_ACEITA_OFERTA: "Aguardando_primeiro_pgto", | |
COMPRADOR_REJEITA_OFERTA: "Rejeitada", | |
TEMPO_PARA_ACEITAR_EXPIRA: "Expirada", | |
VENDEDOR_CANCELA_OFERTA: "Cancelado" | |
} | |
}, | |
Expirada: { | |
on: { | |
VENDEDOR_MELHORA_OU_REATIVA_OFERTA: "Aguarda_comprador_aceitar_oferta", | |
VENDEDOR_ARQUIVA_OFERTA: "Cancelado" | |
} | |
}, | |
Rejeitada: { | |
type: "final" | |
}, | |
Cancelado: { | |
type: "final" | |
}, | |
Aguardando_primeiro_pgto: { | |
on: { | |
PRAZO_DO_COMPRADOR_PARA_PAGTO_EXPIRA: "PrazoPagamentoExpirado", | |
COMPRADOR_NOTIFICA_PGTO_PARCIAL: "Aguardando_primeiro_pgto", | |
COMPRADOR_NOTIFICA_PGTO_COMPLETO: | |
[ {target: "Aguardando_primeiro_pgto", cond: "se_soma_valores_notificados_for_igual_total_devido" }], | |
COMPRADOR_DESISTE_NEGOCIO: "Cancelamento_solicitado_comprador", | |
VENDEDOR_CONFIRMA_PGTO_PARCIAL: "Aguardando_pgto_completo", | |
VENDEDOR_CONFIRMA_PGTO_COMPLETO: "Aguardando_vendedor_enviar_produto", | |
VENDEDOR_ENVIA_PARCIAL_PRODUTO: "Aguardando_primeiro_pgto", | |
VENDEDOR_ENVIA_TOTAL_PRODUTO: "Aguardando_primeiro_pgto_produto_enviado", | |
VENDEDOR_NOTIFICA_CONFLITO: "Conflito", | |
COMPRADOR_NOTIFICA_CONFLITO: "Conflito" | |
} | |
}, | |
PrazoPagamentoExpirado: { | |
on: { | |
VENDEDOR_FAZ_CANCELAMENTO_SEM_MULTA: "Cancelado", | |
VENDEDOR_SOLICITA_CANCELAMENTO_COM_MULTA: [ { target: "Aguardando_comprador_aceitar_multa", cond: "se_contrato_tem_multa"} ], | |
COMPRADOR_NOTIFICA_PGTO_PARCIAL: "PrazoPagamentoExpirado", | |
COMPRADOR_NOTIFICA_PGTO_COMPLETO: | |
[ {target: "PrazoPagamentoExpirado", cond: "se_soma_valores_notificados_for_igual_total_devido" }], | |
COMPRADOR_DESISTE_NEGOCIO: "Cancelamento_solicitado_comprador", | |
VENDEDOR_EXIGE_MULTA_PARA_CONTINUAR_CONTRATO: [ { target: "Aguardando_primeiro_pgto_mais_multa", cond: "se_contrato_tem_multa"} ], | |
VENDEDOR_CONCEDE_PRAZO_EXTRA_PARA_PAGTO: "Aguardando_primeiro_pgto", | |
VENDEDOR_CONFIRMA_PGTO_PARCIAL_COM_ABONO_DE_MULTA: "Aguardando_pgto_completo", | |
VENDEDOR_CONFIRMA_PGTO_COMPLETO_COM_ABONO_DE_MULTA: "Aguardando_vendedor_enviar_produto", | |
VENDEDOR_NOTIFICA_CONFLITO: "Conflito", | |
COMPRADOR_NOTIFICA_CONFLITO: "Conflito" | |
} | |
}, | |
Aguardando_primeiro_pgto_mais_multa: { | |
entry: [ "adc_multa_ao_valor_devido()" ], | |
on: { | |
PRAZO_DO_COMPRADOR_PARA_PAGTO_EXPIRA: "PrazoPagamentoComMultaExpirado", | |
COMPRADOR_NOTIFICA_PGTO_PARCIAL: "Aguardando_primeiro_pgto_mais_multa", | |
COMPRADOR_NOTIFICA_PGTO_COMPLETO: | |
[ {target: "Aguardando_primeiro_pgto_mais_multa", cond: "se_soma_valores_notificados_for_igual_total_devido" }], | |
COMPRADOR_DESISTE_NEGOCIO: "Cancelamento_solicitado_comprador", | |
VENDEDOR_CONFIRMA_PGTO_PARCIAL: "Aguardando_pgto_completo", | |
VENDEDOR_CONFIRMA_PGTO_COMPLETO: "Aguardando_vendedor_enviar_produto", | |
VENDEDOR_ENVIA_PARCIAL_PRODUTO: "Aguardando_primeiro_pgto_mais_multa", | |
VENDEDOR_ENVIA_TOTAL_PRODUTO: "Aguardando_primeiro_pgto_produto_enviado", | |
VENDEDOR_NOTIFICA_CONFLITO: "Conflito", | |
COMPRADOR_NOTIFICA_CONFLITO: "Conflito" | |
} | |
}, | |
PrazoPagamentoComMultaExpirado: { | |
on: { | |
COMPRADOR_NOTIFICA_PGTO_PARCIAL: "PrazoPagamentoComMultaExpirado", | |
COMPRADOR_NOTIFICA_PGTO_COMPLETO: | |
[ {target: "PrazoPagamentoComMultaExpirado", cond: "se_soma_valores_notificados_for_igual_total_devido" }], | |
COMPRADOR_DESISTE_NEGOCIO: "Cancelamento_solicitado_comprador", | |
VENDEDOR_FAZ_CANCELAMENTO_SEM_MULTA: "Cancelado", | |
VENDEDOR_CONCEDE_PRAZO_EXTRA_PARA_PAGTO: "Aguardando_primeiro_pgto_mais_multa", | |
VENDEDOR_CONFIRMA_PGTO_PARCIAL: "Aguardando_pgto_completo", | |
VENDEDOR_CONFIRMA_PGTO_COMPLETO: "Aguardando_vendedor_enviar_produto", | |
VENDEDOR_NOTIFICA_CONFLITO: "Conflito", | |
COMPRADOR_NOTIFICA_CONFLITO: "Conflito" | |
} | |
}, | |
Aguardando_pgto_completo_com_exigencia_de_multa_por_atraso: { | |
entry: ["mostra_tela_pagto"], | |
on: { | |
COMPRADOR_NOTIFICA_PGTO_PARCIAL: "Aguardando_pgto_completo_com_exigencia_de_multa_por_atraso", | |
COMPRADOR_NOTIFICA_PGTO_COMPLETO: | |
[ {target: "Aguardando_pgto_completo_com_exigencia_de_multa_por_atraso", cond: "se_soma_valores_notificados_for_igual_total_devido" }], | |
COMPRADOR_DESISTE_NEGOCIO: "Cancelamento_solicitado_comprador", | |
VENDEDOR_CONFIRMA_PGTO_PARCIAL: "Aguardando_pgto_completo_com_exigencia_de_multa_por_atraso", | |
VENDEDOR_CONFIRMA_PGTO_COMPLETO_COM_ABONO_DE_MULTA: "Aguardando_vendedor_enviar_produto", | |
VENDEDOR_CONFIRMA_PGTO_COMPLETO: "Aguardando_vendedor_enviar_produto", | |
VENDEDOR_ENVIA_PARCIAL_PRODUTO: "Aguardando_pgto_completo_com_exigencia_de_multa_por_atraso", | |
VENDEDOR_ENVIA_TOTAL_PRODUTO: "Aguardando_pgto_produto_enviado", | |
} | |
}, | |
Aguardando_pgto_completo: { | |
entry: ["mostra_tela_pagto"], | |
on: { | |
COMPRADOR_NOTIFICA_PGTO_PARCIAL: "Aguardando_pgto_completo", | |
COMPRADOR_NOTIFICA_PGTO_COMPLETO: "Aguardando_pgto_completo", | |
COMPRADOR_DESISTE_NEGOCIO: "Cancelamento_solicitado_comprador", | |
VENDEDOR_CONFIRMA_PGTO_PARCIAL: "Aguardando_pgto_completo", | |
VENDEDOR_CONFIRMA_PGTO_COMPLETO: "Aguardando_vendedor_enviar_produto", | |
VENDEDOR_ENVIA_PARCIAL_PRODUTO: "Aguardando_pgto_completo", | |
VENDEDOR_ENVIA_TOTAL_PRODUTO: "Aguardando_pgto_produto_enviado", | |
} | |
}, | |
Aguardando_primeiro_pgto_produto_enviado: { | |
on: { | |
COMPRADOR_NOTIFICA_PGTO_PARCIAL: "Aguardando_primeiro_pgto_produto_enviado", | |
COMPRADOR_NOTIFICA_PGTO_COMPLETO: "Aguardando_primeiro_pgto_produto_enviado", | |
COMPRADOR_DESISTE_NEGOCIO: "Cancelamento_solicitado_comprador", | |
VENDEDOR_CONFIRMA_PGTO_PARCIAL: "Aguardando_pgto_produto_enviado", | |
VENDEDOR_CONFIRMA_PGTO_COMPLETO: "Negociacao_completa", | |
} | |
}, | |
Aguardando_pgto_produto_enviado: { | |
on: { | |
COMPRADOR_NOTIFICA_PGTO_PARCIAL: "Aguardando_pgto_produto_enviado", | |
COMPRADOR_NOTIFICA_PGTO_COMPLETO: "Aguardando_pgto_produto_enviado", | |
COMPRADOR_DESISTE_NEGOCIO: "Cancelamento_solicitado_comprador", | |
VENDEDOR_CONFIRMA_PGTO_PARCIAL: "Aguardando_pgto_produto_enviado", | |
VENDEDOR_CONFIRMA_PGTO_COMPLETO: "Negociacao_completa", | |
} | |
}, | |
Aguardando_vendedor_enviar_produto: { | |
entry: ["notifica_comprador_pgto_completo"], | |
on:{ | |
VENDEDOR_CONFIRMA_ENVIA_TOTAL_PRODUTO: "Negociacao_completa", | |
VENDEDOR_CONFIRMA_ENVIA_PARCIAL_PRODUT: "Aguardando_vendedor_enviar_produto", | |
} | |
}, | |
Negociacao_completa: { | |
type: "final" | |
}, | |
Cancelamento_solicitado_comprador: { | |
on:{ | |
VENDEDOR_ACEITA_CANCELAMENTO_SEM_MULTA: "Cancelado", | |
VENDEDOR_SOLICITA_MULTA: [ { target: "Aguardando_comprador_aceitar_multa", cond: "se_contrato_tem_multa"} ] | |
} | |
}, | |
Aguardando_comprador_aceitar_multa: { | |
entry : ["avisa_comprador_sobre_conflito"], | |
on: { | |
COMPRADOR_ACEITA_MULTA: "Aguarda_comprador_pagar_multa", | |
COMPRADOR_REJEITA_MULTA: "Conflito", | |
PRAZO_PARA_DECIDIR_EXPIRA: "Prazo_comprador_decidir_multa_expirado", | |
} | |
}, | |
Prazo_comprador_decidir_multa_expirado: { | |
on: { | |
VENDEDOR_NOTIFICA_CONFLITO: "Conflito", | |
COMPRADOR_ACEITA_MULTA: "Aguarda_comprador_pagar_multa", | |
} | |
}, | |
Aguarda_comprador_pagar_multa: { | |
on: { | |
COMPRADOR_INFORMA_PGTO: "Aguarda_vendedor_confirmar_recebimento_multa", | |
VENDEDOR_CONFIRMA_RECEBIMENTO_MULTA: "Cancelado", | |
VENDEDOR_NOTIFICA_CONFLITO: "Conflito", | |
} | |
}, | |
Aguarda_vendedor_confirmar_recebimento_multa: { | |
on: { | |
COMPRADOR_INFORMA_PGTO: "Aguarda_vendedor_confirmar_recebimento_multa", | |
VENDEDOR_CONFIRMA_RECEBIMENTO_MULTA: "Cancelado", | |
VENDEDOR_NOTIFICA_CONFLITO: "Conflito", | |
COMPRADOR_NOTIFICA_CONFLITO: "Conflito", | |
} | |
}, | |
Conflito : { | |
type: "final", | |
entry: "gera_relatorio_conflito" | |
} | |
} | |
}, { | |
guards: { | |
se_contrato_tem_multa: (context, event) => { return context.tem_multa == true}, | |
se_soma_valores_notificados_for_igual_total_devido:(context, event) => {return true} | |
} | |
}); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment