diff --git a/src/Models/Sale.php b/src/Models/Sale.php index 218ba6e..818ccf0 100644 --- a/src/Models/Sale.php +++ b/src/Models/Sale.php @@ -151,4 +151,14 @@ public function has_personalization(): int { return $this->personalizations()->count(); } + + public function periodicities(): HasMany + { + return $this->hasMany(SalePeriodicity::class, 'sale_id'); + } + + public function crm_credit_process_simulator(): BelongsTo + { + return $this->belongsTo(config('iss-vendas.crm_credit_process_simulator_class'), 'crm_credit_process_simulator_id', 'id'); + } } diff --git a/src/Models/SalePeriodicity.php b/src/Models/SalePeriodicity.php new file mode 100644 index 0000000..39044b8 --- /dev/null +++ b/src/Models/SalePeriodicity.php @@ -0,0 +1,153 @@ + 'Financiamento', + 'fgts' => 'FGTS', + 'subsidy' => 'Subsídio', + 'down_payment' => 'Entrada', + 'intermediate' => 'Intermediária', + 'post_construction' => 'Pós-obra', + 'monthly' => 'Mensal', + 'bimonthly' => 'Bimestral', + 'quarterly' => 'Trimestral', + 'semiannual' => 'Semestral', + 'yearly' => 'Anual', + 'conclusion_balance' => 'Saldo Conclusão', + 'conclusion_keys' => 'Conclusão chaves', + //vendas + 'signal' => 'Sinal', + 'periodicity' => 'Periodicidade', + 'final' => 'Final', + 'single' => 'Única', + 'single_financing' => 'Única - Financiamento', + 'vehicle_exchange' => 'Dação em pagamento - Veículo', + 'real_estate_development_exchange' => 'Dação em pagamento - Imóvel', + ]; + + /** + * @const array[] + */ + public const PAYMENT_METHOD = [ + 'bank_slip' => 'Boleto', + 'bank' => 'Banco', + 'credit_card' => 'Cartão', + ]; + + /* + * 00 - Aguardando Json + * 10 - Processado + * 20 - Baixado + * 30 - Integrado com o Oracle + * 40 - Integrado com o Mega + * 80 - Cancelado + * 99 - Processado com Erro + */ + public const PERIODICITY_STATUS_FROM_MEGA = [ + '0' => [ + 'label' => 'Não gerado', + 'value' => 'not-generated', + ], + '10' => [ + 'label' => 'Em aberto', + 'value' => 'is-open', + ], + '20' => [ + 'label' => 'Pago', + 'value' => 'paid', + ], + '80' => [ + 'label' => 'Cancelado', + 'value' => 'canceled', + ], + '99' => [ + 'label' => 'Não gerado', + 'value' => 'not-generated', + ], + 'unknown' => [ + 'label' => 'Desconhecido', + 'value' => 'unknown', + ], + ]; + + protected $fillable = [ + 'uuid', + 'proposal_model_id', + 'periodicity', + 'installments', + 'installment_price', + 'installment_amount', + 'due_at', + 'editable', + 'payment_method', + ]; + + protected $casts = [ + 'due_at' => 'date:Y-m-d', + 'installment_amount' => 'real', + 'editable' => 'boolean', + ]; + + public function sale(): BelongsTo + { + return $this->belongsTo(Sale::class); + } +}