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