Skip to content
This repository was archived by the owner on Jan 28, 2022. It is now read-only.

Commit a10be47

Browse files
committed
UPDATE Nach Release Build 4.2.3.167
1 parent 97941d7 commit a10be47

File tree

11 files changed

+3188
-24
lines changed

11 files changed

+3188
-24
lines changed

eRechnungWordPlugIn/Scripts/Version.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44
<Release>4</Release>
55
<Major>2</Major>
66
<Minor>3</Minor>
7-
<Update>1</Update>
7+
<Update>167</Update>
88
</Actual>
99
</Version>

eRechnungWordPlugIn/UnitTests/ebIViewModelsTests/ViewModels/DetailsViewModelsTests.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ public void LoadTest()
5252
_common.Invoice = InvoiceFactory.LoadTemplate(Common.InvTest);
5353
var det = DetailsListConverter.Load(_common.Invoice.Details.ItemList, _common.UContainer, false);
5454
Assert.IsNotNull(det);
55-
55+
Assert.AreEqual((int)4, det.DetailsList.Count);
56+
Assert.AreEqual("DAY", det.DetailsList[0].Einheit);
57+
Assert.AreEqual("LS", det.DetailsList[2].Einheit);
5658
}
5759

5860
[TestMethod]
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Collections.ObjectModel;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
using ebICommonTestSetup;
8+
using ebIModels.Schema;
9+
using ebIViewModels.ViewModels;
10+
using ebIViewModelsTests.ViewModels;
11+
using Microsoft.Practices.Unity;
12+
using Microsoft.VisualStudio.TestTools.UnitTesting;
13+
namespace ebIViewModels.ViewModels.Tests
14+
{
15+
[TestClass()]
16+
public class DetailsViewModelsTests : CommonTestSetup
17+
{
18+
private readonly Common _common;
19+
20+
public DetailsViewModelsTests()
21+
{
22+
_common = Cmn;
23+
}
24+
25+
26+
[TestMethod()]
27+
public void DetailsViewModelsTest()
28+
{
29+
DetailsListConverter det = _common.UContainer.Resolve<DetailsListConverter>();
30+
var detv = new DetailsViewModel(null, null, false)
31+
{
32+
EinzelPreis = new decimal(60.0125),
33+
Menge = new decimal(10),
34+
VatSatz = 20
35+
};
36+
// detv.UpdateTotals();
37+
det.DetailsList.Add(detv);
38+
var det2 = det.DetailsList[0];
39+
Assert.AreEqual((decimal)600.13,det2.NettoBetragZeile);
40+
Assert.AreEqual((decimal)120.03,det2.MwStBetragZeile);
41+
}
42+
43+
[TestMethod()]
44+
public void GetItemListTest()
45+
{
46+
47+
}
48+
49+
[TestMethod()]
50+
public void LoadTest()
51+
{
52+
_common.Invoice = InvoiceFactory.LoadTemplate(Common.InvTest);
53+
var det = DetailsListConverter.Load(_common.Invoice.Details.ItemList, _common.UContainer, false);
54+
Assert.IsNotNull(det);
55+
56+
}
57+
58+
[TestMethod]
59+
public void GetItemLoadRabattTestOk()
60+
{
61+
_common.Invoice = InvoiceFactory.LoadTemplate(Common.InvTest);
62+
63+
var det = DetailsListConverter.Load(_common.Invoice.Details.ItemList, _common.UContainer, false).DetailsList;
64+
var detList = DetailsListConverter.ConvertToItemList(det, "Z01");
65+
var det2 = DetailsListConverter.Load(detList, _common.UContainer, false).DetailsList;
66+
67+
Assert.AreEqual(det[0].Rabatt,det2[0].Rabatt);
68+
}
69+
70+
[TestMethod]
71+
public void BestPosNotEmptyTestOk()
72+
{
73+
var detail = Cmn.UContainer.Resolve<DetailsViewModel>(new ParameterOverride("bestPosRequired",true));
74+
detail.ArtikelNr = "100";
75+
detail.Bezeichnung = "Testartikel";
76+
detail.Menge = 10;
77+
detail.Einheit = "STK";
78+
detail.EinzelPreis = 2000;
79+
detail.VatSatz = 20;
80+
detail.BestellBezug = "100";
81+
detail.SaveCommand.Execute(null);
82+
Cmn.ListResults(detail.Results);
83+
Assert.IsTrue(detail.Results.IsValid);
84+
}
85+
[TestMethod]
86+
public void BestPosEmptyTestNotOk()
87+
{
88+
var detail = Cmn.UContainer.Resolve<DetailsViewModel>(new ParameterOverride("bestPosRequired", true));
89+
detail.ArtikelNr = "100";
90+
detail.Bezeichnung = "Testartikel";
91+
detail.Menge = 10;
92+
detail.Einheit = "STK";
93+
detail.EinzelPreis = 2000;
94+
detail.VatSatz = 20;
95+
detail.BestellBezug = "";
96+
detail.SaveCommand.Execute(null);
97+
Cmn.ListResults(detail.Results);
98+
Assert.IsTrue(!detail.Results.IsValid);
99+
}
100+
[TestMethod]
101+
public void BestPosSpacesTestNotOk()
102+
{
103+
var detail = Cmn.UContainer.Resolve<DetailsViewModel>(new ParameterOverride("bestPosRequired", true));
104+
detail.ArtikelNr = "100";
105+
detail.Bezeichnung = "Testartikel";
106+
detail.Menge = 10;
107+
detail.Einheit = "STK";
108+
detail.EinzelPreis = 2000;
109+
detail.VatSatz = 20;
110+
detail.BestellBezug = " ";
111+
detail.SaveCommand.Execute(null);
112+
Cmn.ListResults(detail.Results);
113+
Assert.IsTrue(!detail.Results.IsValid);
114+
}
115+
[TestMethod]
116+
public void BestPosBundAlphaTestNotOk()
117+
{
118+
var detail = Cmn.UContainer.Resolve<DetailsViewModel>(new ParameterOverride("bestPosRequired", true));
119+
detail.ArtikelNr = "100";
120+
detail.Bezeichnung = "Testartikel";
121+
detail.Menge = 10;
122+
detail.Einheit = "STK";
123+
detail.EinzelPreis = 2000;
124+
detail.VatSatz = 20;
125+
detail.BestellBezug = "Abcd";
126+
detail.SaveCommand.Execute(null);
127+
Cmn.ListResults(detail.Results);
128+
Assert.IsTrue(!detail.Results.IsValid);
129+
}
130+
[TestMethod]
131+
public void BestPosWirtschaftAlphaTestOk()
132+
{
133+
var detail = Cmn.UContainer.Resolve<DetailsViewModel>(new ParameterOverride("bestPosRequired", false));
134+
detail.ArtikelNr = "100";
135+
detail.Bezeichnung = "Testartikel";
136+
detail.Menge = 10;
137+
detail.Einheit = "STK";
138+
detail.EinzelPreis = 2000;
139+
detail.VatSatz = 20;
140+
detail.BestellBezug = "Abcd";
141+
detail.SaveCommand.Execute(null);
142+
Cmn.ListResults(detail.Results);
143+
Assert.IsTrue(detail.Results.IsValid);
144+
}
145+
}
146+
}

eRechnungWordPlugIn/eRechnung/eRechnung.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@
2424
</TargetFrameworkProfile>
2525
<AssemblyVersion>4.2.</AssemblyVersion>
2626
<BootstrapperEnabled>true</BootstrapperEnabled>
27-
<PublishUrl>C:\trash\publish\Codeplex\V4p2p3p1\</PublishUrl>
27+
<PublishUrl>C:\trash\publish\Codeplex\V4p2p3p167\</PublishUrl>
2828
<InstallUrl />
2929
<TargetCulture>de</TargetCulture>
30-
<ApplicationVersion>4.2.3.165</ApplicationVersion>
30+
<ApplicationVersion>4.2.3.166</ApplicationVersion>
3131
<AutoIncrementApplicationRevision>true</AutoIncrementApplicationRevision>
3232
<UpdateEnabled>true</UpdateEnabled>
3333
<UpdateInterval>7</UpdateInterval>
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<ProductInfo>
33
<Title>ebInterface 4.2 Word PlugIn</Title>
4-
<Version>4.2.3.1</Version>
5-
<CompileInfo>Debug</CompileInfo>
6-
<CompileTime>2016-02-12 14:39:39</CompileTime>
4+
<Version>4.2.3.167</Version>
5+
<CompileInfo>Release</CompileInfo>
6+
<CompileTime>2016-02-12 18:08:28</CompileTime>
77
<Branch>master</Branch>
8-
<LastCommit>2016-02-12 14:39:38</LastCommit>
9-
<ChangeSetId>b5e7169</ChangeSetId>
8+
<LastCommit>2016-02-12 18:08:28</LastCommit>
9+
<ChangeSetId>97941d7</ChangeSetId>
1010
</ProductInfo>

eRechnungWordPlugIn/ebIViewModels/Converters/DetailsListConverter.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using ExtensionMethods;
99
using Microsoft.Practices.Unity;
1010
using WinFormsMvvm;
11+
using SettingsManager;
1112

1213
namespace ebIViewModels.ViewModels
1314
{
@@ -51,13 +52,21 @@ public static List<ItemListType> ConvertToItemList(BindingList<DetailsViewModel>
5152
{
5253
Value = details.EinzelPreis
5354
};
54-
if (!details.Taxexemption)
55+
if (PlugInSettings.Default.VStBerechtigt)
5556
{
5657
VATRateType rate = new VATRateType();
5758
rate.Value = details.VatSatz;
5859
rate.TaxCode = details.VatCode;
5960
lineItem.Item = rate;
6061
}
62+
else
63+
{
64+
TaxExemptionType taxEx = new TaxExemptionType()
65+
{
66+
Value = PlugInSettings.Default.VStText
67+
};
68+
lineItem.Item = taxEx;
69+
}
6170
lineItem.Quantity = new UnitType()
6271
{
6372
Unit = details.Einheit,
@@ -121,14 +130,14 @@ public static DetailsListConverter Load(List<ItemListType> itemList,IUnityContai
121130
det.EinzelPreis = listLineItem.UnitPrice.Value ?? 0;
122131
// det.GesamtBruttoBetrag = listLineItem.LineItemAmount ?? 0;
123132
det.Menge = listLineItem.Quantity.Value ?? 0;
124-
if (listLineItem.Item is TaxExemptionType)
133+
if (listLineItem.Item is TaxExemptionType || (!PlugInSettings.Default.VStBerechtigt))
125134
{
126-
det.Taxexemption = true;
135+
//det.Taxexemption = true;
127136
det.VatSatz = 0;
128137
}
129138
else
130139
{
131-
det.Taxexemption = false;
140+
//det.Taxexemption = false;
132141
VATRateType rate = (VATRateType)listLineItem.Item;
133142
if (rate != null)
134143
det.VatSatz = rate.Value ?? 0;
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.ComponentModel;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
using ebIModels.Models;
8+
using ExtensionMethods;
9+
using Microsoft.Practices.Unity;
10+
using WinFormsMvvm;
11+
12+
namespace ebIViewModels.ViewModels
13+
{
14+
// ToDo: Taxexemption
15+
public class DetailsListConverter
16+
{
17+
private BindingList<DetailsViewModel> _detailsList = new BindingList<DetailsViewModel>();
18+
/// <summary>
19+
/// Comment
20+
/// </summary>
21+
public BindingList<DetailsViewModel> DetailsList
22+
{
23+
get { return _detailsList; }
24+
set
25+
{
26+
if (_detailsList == value)
27+
return;
28+
_detailsList = value;
29+
}
30+
}
31+
32+
public static List<ItemListType> ConvertToItemList(BindingList<DetailsViewModel> detailsList, string orderId)
33+
{
34+
ItemListType itemList = new ItemListType();
35+
itemList.ListLineItem = new List<ListLineItemType>();
36+
int posNr = 1;
37+
foreach (DetailsViewModel details in detailsList)
38+
{
39+
ListLineItemType lineItem = new ListLineItemType();
40+
lineItem.ArticleNumber = new List<ArticleNumberType>(){new ArticleNumberType()
41+
{
42+
Text = new List<string>(){details.ArtikelNr}
43+
}};
44+
lineItem.Description = new List<string>() { details.Bezeichnung };
45+
lineItem.PositionNumber = posNr.ToString();
46+
posNr++;
47+
lineItem.InvoiceRecipientsOrderReference.OrderID = orderId;
48+
lineItem.InvoiceRecipientsOrderReference.OrderPositionNumber = details.BestellBezug;
49+
50+
lineItem.UnitPrice = new UnitPriceType()
51+
{
52+
Value = details.EinzelPreis
53+
};
54+
if (!details.Taxexemption)
55+
{
56+
VATRateType rate = new VATRateType();
57+
rate.Value = details.VatSatz;
58+
rate.TaxCode = details.VatCode;
59+
lineItem.Item = rate;
60+
}
61+
lineItem.Quantity = new UnitType()
62+
{
63+
Unit = details.Einheit,
64+
Value = details.Menge
65+
};
66+
if (details.Rabatt != null)
67+
{
68+
ReductionAndSurchargeListLineItemDetailsType red = new ReductionAndSurchargeListLineItemDetailsType();
69+
red.ItemsElementName = new List<ItemsChoiceType>()
70+
{
71+
ItemsChoiceType.ReductionListLineItem
72+
};
73+
red.Items = new List<object>();
74+
ReductionAndSurchargeBaseType redBase = new ReductionAndSurchargeBaseType();
75+
redBase.BaseAmount = details.NettoBasisBetrag;
76+
redBase.Percentage = details.Rabatt;
77+
redBase.PercentageSpecified = true;
78+
red.Items.Add(redBase);
79+
lineItem.ReductionAndSurchargeListLineItemDetails = red;
80+
lineItem.DiscountFlag = true;
81+
lineItem.DiscountFlagSpecified = true;
82+
}
83+
lineItem.LineItemAmount = details.NettoBetragZeile;
84+
itemList.ListLineItem.Add(lineItem);
85+
}
86+
List<ItemListType> item = new List<ItemListType>();
87+
item.Add(itemList);
88+
return item;
89+
}
90+
91+
92+
public static DetailsListConverter Load(List<ItemListType> itemList,IUnityContainer uc, bool bestPosRequired)
93+
{
94+
// ItemListType listType = details.ItemList.FirstOrDefault(); // DAs PlugIn hat nur hier nur einen Eintrag
95+
96+
DetailsListConverter details = uc.Resolve<DetailsListConverter>(); // new DetailsListViewModel();
97+
if (!itemList.Any())
98+
{
99+
return details;
100+
}
101+
ItemListType listType = itemList.FirstOrDefault(); // DAs PlugIn hat nur hier nur einen Eintrag
102+
103+
if (listType == null)
104+
{
105+
return details;
106+
}
107+
if (!listType.ListLineItem.Any())
108+
{
109+
return details;
110+
}
111+
foreach (ListLineItemType listLineItem in listType.ListLineItem)
112+
{
113+
DetailsViewModel det = uc.Resolve<DetailsViewModel>(new ParameterOverride("bestPosRequired", bestPosRequired)); //new DetailsViewModel();
114+
115+
det.BestellBezug = listLineItem.InvoiceRecipientsOrderReference.OrderPositionNumber; // .UnescapeXml();
116+
var articleNumberType = listLineItem.ArticleNumber.FirstOrDefault();
117+
if (articleNumberType != null)
118+
det.ArtikelNr = articleNumberType.Text.FirstOrDefault(); // .UnescapeXml();
119+
det.Bezeichnung = listLineItem.Description[0]; // .UnescapeXml();
120+
det.Einheit = listLineItem.Quantity.Unit;
121+
det.EinzelPreis = listLineItem.UnitPrice.Value ?? 0;
122+
// det.GesamtBruttoBetrag = listLineItem.LineItemAmount ?? 0;
123+
det.Menge = listLineItem.Quantity.Value ?? 0;
124+
if (listLineItem.Item is TaxExemptionType)
125+
{
126+
det.Taxexemption = true;
127+
det.VatSatz = 0;
128+
}
129+
else
130+
{
131+
det.Taxexemption = false;
132+
VATRateType rate = (VATRateType)listLineItem.Item;
133+
if (rate != null)
134+
det.VatSatz = rate.Value ?? 0;
135+
}
136+
if (listLineItem.ReductionAndSurchargeListLineItemDetails!=null)
137+
{
138+
var red = listLineItem.ReductionAndSurchargeListLineItemDetails.Items.FirstOrDefault() as ReductionAndSurchargeBaseType;
139+
if (red != null) det.Rabatt = red.Percentage ?? 0;
140+
}
141+
// det.UpdateTotals();
142+
details.DetailsList.Add(det);
143+
}
144+
return details;
145+
}
146+
147+
}
148+
}

0 commit comments

Comments
 (0)