Files
careit-fixed/backendcareit_v4/services/close_billing.go
2026-02-06 14:22:35 +07:00

53 lines
1.4 KiB
Go

package services
import (
"errors"
"fmt"
"time"
"backendcareit/database"
"backendcareit/models"
)
// CloseBilling - Nutup billing dengan set Tanggal_Keluar (selesai dah pasiennya)
func CloseBilling(closeReq models.Close_billing) error {
// Cari billing berdasarkan ID_Billing
var billing models.BillingPasien
if err := database.DB.Where("\"ID_Billing\" = ?", closeReq.ID_Billing).First(&billing).Error; err != nil {
return fmt.Errorf("billing dengan ID %d tidak ditemukan: %w", closeReq.ID_Billing, err)
}
// Parse Tanggal_Keluar dari string ke time.Time
// Menggunakan multiple layouts seperti di billing_pasien.go
var keluarTime *time.Time
if closeReq.Tanggal_Keluar != "" {
s := closeReq.Tanggal_Keluar
var parsed time.Time
var err error
layouts := []string{time.RFC3339, "2006-01-02 15:04:05", "2006-01-02"}
for _, layout := range layouts {
parsed, err = time.Parse(layout, s)
if err == nil {
t := parsed
keluarTime = &t
break
}
}
if keluarTime == nil {
return fmt.Errorf("format tanggal_keluar tidak valid: %s", closeReq.Tanggal_Keluar)
}
} else {
return errors.New("tanggal_keluar tidak boleh kosong")
}
// Update Tanggal_keluar pada billing
billing.Tanggal_keluar = keluarTime
// Simpan perubahan
if err := database.DB.Save(&billing).Error; err != nil {
return fmt.Errorf("gagal update billing: %w", err)
}
return nil
}