InvoiceBase.StoredFile
+ Localhost download XRechnung durch Beispiel PDF ersetzt
This commit is contained in:
@@ -917,14 +917,14 @@ namespace BeWo.ViewModel
|
||||
get; set;
|
||||
}
|
||||
|
||||
public long? Oid => DataContract.InvoiceBaseOid;
|
||||
public string SenderStreet => DataContract.SenderStreet;
|
||||
public string SenderTown => DataContract.SenderTown;
|
||||
public string SenderPostCode => DataContract.SenderPostCode;
|
||||
public StoredFileDC XRechnungStoredFile => DataContract.XRechnungStoredFile;
|
||||
|
||||
public IList<IInvoiceItem> IInvoiceItems => throw new NotImplementedException();
|
||||
|
||||
public long? Oid => DataContract.InvoiceBaseOid;
|
||||
|
||||
protected override void InitByDataContract(InvoiceBaseDC pDataContract)
|
||||
{
|
||||
_SupportConceptOid = pDataContract.SupportConceptOid;
|
||||
|
||||
@@ -831,5 +831,7 @@ namespace BeWo.Data.Entities
|
||||
public virtual string SenderTown => SenderAddress?.Town;
|
||||
public virtual string SenderPostCode => SenderAddress?.PostalCode;
|
||||
public virtual IList<IInvoiceItem> IInvoiceItems => InvoiceItems.Select(x => x as IInvoiceItem).ToList();
|
||||
|
||||
public virtual StoredFile XRechnungStoredFile { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -50,6 +50,7 @@
|
||||
<many-to-one name="SenderAddress" column="SenderAddressOid" class="BeWo.Data.Entities.Address, BeWo.Data" cascade="all" />
|
||||
<many-to-one name="RecipientAddress" column="RecipientAddressOid" class="BeWo.Data.Entities.Address, BeWo.Data" cascade="all" />
|
||||
<many-to-one name="CostBearer2SupportConcept" column="CostBearer2SupportConceptOid" class="BeWo.Data.Entities.CostBearer2SupportConcept, BeWo.Data" cascade="none" />
|
||||
<many-to-one name="XRechnungStoredFile" column="XRechnungStoredFileOid" class="BeWo.Data.Entities.StoredFile, BeWo.Data" cascade="all-delete-orphan" />
|
||||
<bag name="InvoiceItems" table="InvoiceItem" generic="true" cascade="all-delete-orphan" batch-size="250">
|
||||
<key column="InvoiceBaseOid" />
|
||||
<one-to-many class="BeWo.Data.Entities.InvoiceItem,BeWo.Data" />
|
||||
|
||||
@@ -388,9 +388,9 @@
|
||||
<add key="OpenWebUIUrl" value="https://owui1.ownsoft.de/"/>
|
||||
|
||||
<add key="XRechnungApiUrl" value="https://test2.evplaner.de/xrg/"/>
|
||||
<add key="StoredFilesFolderPath" value="C:\StoredFiles"/>
|
||||
<add key="StoredTenantFilesFolderPath" value="C:\StoredTenantFiles"/>
|
||||
<add key="HelloWorldPdfLocation" value="C:\StoredFiles\HelloWorld.pdf"/>
|
||||
<add key="StoredFilesFolderPath" value="C:\BeWoPlaner\StoredFiles"/>
|
||||
<add key="StoredTenantFilesFolderPath" value="C:\BeWoPlaner\StoredTenantFiles"/>
|
||||
<add key="HelloWorldPdfLocation" value="C:\BeWoPlaner\StoredFiles\HelloWorld.pdf"/>
|
||||
|
||||
<add key="ServiceLogFilePath" value="C:\BeWoPlaner\logs\server\service.log.txt"/>
|
||||
<add key="WCFErrorLogFilePath" value="C:\BeWoPlaner\logs\server\wcferror.log.txt"/>
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
ALTER TABLE `invoicebase`
|
||||
ADD COLUMN `XRechnungStoredFileOid` BIGINT NULL DEFAULT NULL AFTER `StornoInvoiceBaseOid`,
|
||||
ADD INDEX `FK_IN_SFILE_idx` (`XRechnungStoredFileOid` ASC) VISIBLE;
|
||||
;
|
||||
ALTER TABLE `invoicebase`
|
||||
ADD CONSTRAINT `FK_IN_SFILE`
|
||||
FOREIGN KEY (`XRechnungStoredFileOid`)
|
||||
REFERENCES `storedfile` (`Oid`)
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE CASCADE;
|
||||
@@ -152,7 +152,9 @@ namespace BeWo.Service.DCEntityMapper
|
||||
pDataContract.IsGkvValid = error is null;
|
||||
}
|
||||
|
||||
return pDataContract;
|
||||
pDataContract.XRechnungStoredFile = MapperFactory.StoredFile.CreateOrMapToNewDC(pEntity.XRechnungStoredFile, true);
|
||||
|
||||
return pDataContract;
|
||||
}
|
||||
|
||||
public override InvoiceBase MergeWithEntity(InvoiceBaseDC pDataContract, InvoiceBase pEntity)
|
||||
|
||||
@@ -811,5 +811,6 @@ namespace BeWo.Service.DCEntityMapper
|
||||
public static GkvAbrechnungLightDC_GkvAbrechnungLight GkvAbrechnungLight { get; } = new GkvAbrechnungLightDC_GkvAbrechnungLight();
|
||||
public static GkvTransferProtokollLightDC_GkvTransferprotokollLight GkvTransferprotokollLight { get; } = new GkvTransferProtokollLightDC_GkvTransferprotokollLight();
|
||||
public static OrganisationLightDC_OrganisationLight OrganisationLight { get; } = new OrganisationLightDC_OrganisationLight();
|
||||
public static StoredFileDC_StoredFile StoredFile { get; } = new StoredFileDC_StoredFile();
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Service.Core;
|
||||
using BeWo.Service.ServiceImplementations;
|
||||
using BeWo.Service.ServiceProxy;
|
||||
@@ -26,27 +27,42 @@ namespace BeWo.Service.Plugins
|
||||
var lStoragePath = MergedConfig.GetSetting(WebConfigSetting.StoredTenantFilesFolderPath);
|
||||
var lStorage = DAOFactory.GetLocalTenantFileStorage(lStoragePath);
|
||||
|
||||
var lFileName = lStorage.GetXRechnungFileName(invoice_base_oid);
|
||||
var invoice_base = DAOFactory.GenericDAO.LoadByID<InvoiceBase>(invoice_base_oid);
|
||||
|
||||
// Falls Lokal vorhanden, gebe lokale Version zurück
|
||||
if(tryGetXRechnungLocal(lStorage, lFileName, out var bytes))
|
||||
if(invoice_base.XRechnungStoredFile?.FileName is string lFileName && tryGetXRechnungLocal(lStorage, lFileName, out var bytes))
|
||||
return ApiResponse<byte[]>.SuccessResponse(bytes);
|
||||
|
||||
// Lokal nicht vorhanden, berechne XRechnung
|
||||
var str = ServiceConfigReader.GetInvoiceTestJsonString();
|
||||
|
||||
// Erstelle Url ohne weitere Authentifizierung
|
||||
var download_url = report_url + "&mode=pdf";
|
||||
var token_url = new DownloadServiceImp().CreateTemporaryUrl(download_url, false);
|
||||
var token_url = GetTokenUrl(report_url);
|
||||
|
||||
return requestXRechnung(lStorage, lFileName, invoice_base_oid, str, token_url);
|
||||
return requestXRechnung(lStorage, invoice_base, str, token_url);
|
||||
}
|
||||
|
||||
private ApiResponse<byte[]> requestXRechnung(LocalTenantFileStorageDAO pStorage, string pFileName, long invoice_base_oid, object obj, string token_url)
|
||||
private string GetTokenUrl(string report_url)
|
||||
{
|
||||
string download_url;
|
||||
|
||||
if (report_url.IndexOf("localhost") < 0)
|
||||
download_url = report_url + "&mode=pdf";
|
||||
else
|
||||
download_url = "https://app5.bewoplaner.de/service/ApiStreamService.svc/GetPdf";
|
||||
|
||||
var token_url = new DownloadServiceImp().CreateTemporaryUrl(download_url, false);
|
||||
|
||||
return token_url;
|
||||
}
|
||||
|
||||
private ApiResponse<byte[]> requestXRechnung(LocalTenantFileStorageDAO pStorage, InvoiceBase invoice_base, object obj, string token_url)
|
||||
{
|
||||
// Request
|
||||
var response = ServiceFacade.XRechnung.Create(obj, token_url);
|
||||
|
||||
var lFileName = pStorage.GetXRechnungFileName(invoice_base.Oid.Value);
|
||||
|
||||
if (response.Success)
|
||||
{
|
||||
try
|
||||
@@ -54,9 +70,11 @@ namespace BeWo.Service.Plugins
|
||||
var bytes = response.Data;
|
||||
using (MemoryStream ms = new MemoryStream(bytes))
|
||||
{
|
||||
var file = pStorage.SaveHybridFile(BWPFeature.XRechnung, pFileName, "application/pdf", ms, TableID.InvoiceBase, invoice_base_oid);
|
||||
//var msg = $"Tenant: {lStorage.Tenant}, FilePath: {file.FilePath}";
|
||||
//ServiceHelper.CoreLogger.Log(LogLevel.Info, msg, $"{nameof(LocalFileStorageDAO)}.{nameof(lStorage.SaveHybridFile)}");
|
||||
var file = pStorage.SaveHybridFile(BWPFeature.XRechnung, lFileName, "application/pdf", ms, TableID.InvoiceBase, invoice_base.Oid.Value);
|
||||
|
||||
invoice_base.XRechnungStoredFile = file;
|
||||
|
||||
DAOFactory.GenericDAO.Update(invoice_base);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -75,6 +75,7 @@ namespace BS.Shared.DataContracts
|
||||
[DataMember] public InvoiceType Type { get; set; }
|
||||
[DataMember] public long? StornoInvoiceBaseOid { get; set; }
|
||||
[DataMember] public String BackgroundColor { get; set; }
|
||||
[DataMember] public StoredFileDC XRechnungStoredFile { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public List<ContactDC> RecipientContactInformations
|
||||
|
||||
Reference in New Issue
Block a user