package de.assecutor.votianlt.repository;

import de.assecutor.votianlt.model.invoices.CustomerInvoice;
import de.assecutor.votianlt.model.invoices.InvoiceStatus;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

@Repository
public interface CustomerInvoiceRepository extends MongoRepository<CustomerInvoice, String> {

    Optional<CustomerInvoice> findByJobId(String jobId);

    List<CustomerInvoice> findByUserId(String userId);

    /** Liefert die – höchstens eine – aktive (nicht stornierte) Rechnung mit dieser Nummer (R-11). */
    Optional<CustomerInvoice> findByInvoiceNumberAndStatusNot(String invoiceNumber, InvoiceStatus status);

    /** Alle Folgebelege (Storno, Korrektur, Ersatzrechnung), die auf diese Originalrechnung verweisen. */
    List<CustomerInvoice> findByOriginalInvoiceId(String originalInvoiceId);

    /** Findet alle Rechnungen ohne expliziten Status — wird für die Bestandsdatenmigration genutzt. */
    List<CustomerInvoice> findByStatusIsNull();
}
