休憩
This commit is contained in:
parent
042bbe032d
commit
f97d671ec4
14 changed files with 1860 additions and 346 deletions
File diff suppressed because it is too large
Load diff
80
generated_pdfs/20260222(請求書)11_請求書分_1円_1864aa2a.PDF
Normal file
80
generated_pdfs/20260222(請求書)11_請求書分_1円_1864aa2a.PDF
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
%PDF-1.3
|
||||||
|
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||||
|
1 0 obj
|
||||||
|
<<
|
||||||
|
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
2 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
3 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
4 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
5 0 obj
|
||||||
|
<<
|
||||||
|
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
|
||||||
|
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||||
|
>> /Rotate 0 /Trans <<
|
||||||
|
|
||||||
|
>>
|
||||||
|
/Type /Page
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
6 0 obj
|
||||||
|
<<
|
||||||
|
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
7 0 obj
|
||||||
|
<<
|
||||||
|
/Author (SELF001) /CreationDate (D:20260222041212+09'00') /Creator (anonymous) /Keywords (payload_hash=0fdabffbd9c9124a38b9a862328c0845131be5d765c49943861f0d0a96106982,chain_hash=6dcb3e92c0a77e650c042edabebeae8fce1fbd540acd9a7f33b397c5c91f3ce5,node_id=662182dc-8024-43ee-bba5-7072917b95fe) /ModDate (D:20260222041212+09'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||||
|
/Subject (6aedfc62-3182-43a6-a6f7-90fca17ea768) /Title (\376\377\212\313lBf\370\000 \0002\0000\0002\0006\0000\0002\0002\0002\000-\0000\0004\0001\0002) /Trapped /False
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
8 0 obj
|
||||||
|
<<
|
||||||
|
/Count 1 /Kids [ 5 0 R ] /Type /Pages
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
9 0 obj
|
||||||
|
<<
|
||||||
|
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1075
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
Gatm9D/Yq6&H;*)JbX>Db]_mrL&7/oM3KEo;tX+hW[kF]92#KT"VrVSjo=1?m``Kf+gl')3gSTiBBFJO(l3t+,5m!pH/>_Dn!Ede,LkK/*oVp%RnqnQbsfBC4j)SENDO`P-O5H(+;*(iGS4%SLr$G"-[+LVWpBMH\+r(;[s:,iJeW0r!aQ-9#r77s;kUD=C5=X!qN!@uLern1Hq*6D`dElug7t$m_qD$<]F1U_18iGR+'>0,UPB$B>?r,r-]TXP!Tmo7@jDq_m>SBg#gNtt>R[?$S5uBh3&t-6"p>j?[pWmK'*Q9F7^B5GMNF75J)3mC_[$@cE];BW>q$LZ8g7UHN=gadnj9=\ps@,9K#T$+/W->'LZSp`p\T2TUkG*XaXDKC1@]@fiN_bt8*BQ-&Tf?8'?&Em_[MEV?lXsleG+dhn-9FCqEAF5ql.L(nDQK!Z.#!nJcl';B>D@M=j2sO-64q':b9SlkF0<.1[eC0aGH:b,%guI&7SPZ;=)5NME,[F1s>N%QBFlnEb7$=9-4IR"X1rPFR7G"cB7DQB^H62p<7+!A"VD_$]ke"k0$TaT$#j`U*sLLQlHmE>s;NlH2Z^2GKK#,IsnnWo/?F>a7\!Z_,!e5;tYQ:e@A0=FOM#&p=K9anLsjJCTXRXP>nQiE%<\n*KRY`>4($J@su-i=k;fF"]oZe9iJ#HWE#d'K/ft&H?X.>pY\8BqO+X,kroUYV?*M4bh%Nb%h(7XG*T4I@deNdlM,37Oe9)4p](k_qT]eS:?o"9lK/Xkp^T<:2DKL6C*8Y>ZIQ0hFTjo,Idf/LVG4>%HV&Z'Hm*g*A4;uVY!0^PlVq^/Hge/[V;KgW9m-tV#`k&HJ4q<=^!=>'PXI?$K*YBsE2Ic^h5W/j=@3&0D&h]ll"[:`W4qGW=OheM>Ltm&\gpDb4NeCG[4=Q0diu9cXf`@#4\<%[pSC_iZ9R`b<FN#T&o.LCH_NQJCRRHe"!P.CW\R;;Y&m+T94OE['mNnl<U%3jS4*ORDdN6do;40%7S\MPcW99]:B_1EO9W-c"A7`1LiK"9,.3RXnfLA?lL,PG`P7TEI#n~>endstream
|
||||||
|
endobj
|
||||||
|
xref
|
||||||
|
0 10
|
||||||
|
0000000000 65535 f
|
||||||
|
0000000061 00000 n
|
||||||
|
0000000112 00000 n
|
||||||
|
0000000219 00000 n
|
||||||
|
0000000331 00000 n
|
||||||
|
0000000414 00000 n
|
||||||
|
0000000617 00000 n
|
||||||
|
0000000685 00000 n
|
||||||
|
0000001252 00000 n
|
||||||
|
0000001311 00000 n
|
||||||
|
trailer
|
||||||
|
<<
|
||||||
|
/ID
|
||||||
|
[<fb1cac16ac2cfd63764b175347c0618e><fb1cac16ac2cfd63764b175347c0618e>]
|
||||||
|
% ReportLab generated PDF document -- digest (opensource)
|
||||||
|
|
||||||
|
/Info 7 0 R
|
||||||
|
/Root 6 0 R
|
||||||
|
/Size 10
|
||||||
|
>>
|
||||||
|
startxref
|
||||||
|
2477
|
||||||
|
%%EOF
|
||||||
80
generated_pdfs/20260222(請求書)1_1_1円_8f541afb.PDF
Normal file
80
generated_pdfs/20260222(請求書)1_1_1円_8f541afb.PDF
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
%PDF-1.3
|
||||||
|
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||||
|
1 0 obj
|
||||||
|
<<
|
||||||
|
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
2 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
3 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
4 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
5 0 obj
|
||||||
|
<<
|
||||||
|
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
|
||||||
|
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||||
|
>> /Rotate 0 /Trans <<
|
||||||
|
|
||||||
|
>>
|
||||||
|
/Type /Page
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
6 0 obj
|
||||||
|
<<
|
||||||
|
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
7 0 obj
|
||||||
|
<<
|
||||||
|
/Author (SELF001) /CreationDate (D:20260222050236+09'00') /Creator (anonymous) /Keywords (payload_hash=50ee99d9d8689c7f763b601167a7df7f30a345eb5fcee45fea98caa972f5b3d1,chain_hash=e7b67e1aacf316efe5515a01de9c1088211f3097074bf31a0df994f5c9c859d9,node_id=662182dc-8024-43ee-bba5-7072917b95fe) /ModDate (D:20260222050236+09'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||||
|
/Subject (77ea7c76-6507-41ac-a67e-ee8204a0e02a) /Title (\376\377\212\313lBf\370\000 \0002\0000\0002\0006\0000\0002\0002\0002\000-\0000\0005\0000\0002) /Trapped /False
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
8 0 obj
|
||||||
|
<<
|
||||||
|
/Count 1 /Kids [ 5 0 R ] /Type /Pages
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
9 0 obj
|
||||||
|
<<
|
||||||
|
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1125
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
Gatm9?&tI7'RcT\JTsef_<WajaBNktQ!.0D?#<Q?g0#R(S.7'b.@<t&ebo/JP73!N,oQ(U.5CNVpR_7j0(CVXV#*kZchi.PrUu7rKR0\Y7l]MblD+)sFj]STO)h^*,8;0lakfE6OGIUE4:/&:_uMB?`/[BHWiBBNX8aO5X^:b)5Q^@!coFT=O>/:.*=XHUhTOR$R6I!o:l&9P,a]eudnUZOO('U4B?-f^$Du.$dq?MoW1V("pBudqEFhro*)fH3*:>*^;FW#qj%3Y^B8?pJqP9*AMa7FbSLfgB65ZLc0JqAfJmouMfi;`P-<-UTVN>5>_8^jYdJ:.I.Zfl_^5Op=#`?\28Rq;)O^H$FO$Hk_8,po(X)He\j4Q(XL^B6'ZDmEgWL"4h*#<1<=U<qFN5siqb/7Qt3-98`6?Y8\f?RrdE#93XQr-#"/as(s,HqjO$UV&n>f&caXI+rAM*@S-CE?m0P!"ets*Sl/UY)t%@g!+BpRDfr?glZCTV0Jr`Y"*)GkP[8$jJ=T2[YD/\d4f4`'a#c,tG5`r1hRMBlr7P-^,]6EKPmm8Bd&r\=>mI50tIl"Zcp3FL:]:&bUf4ak-psFoa%EVuGE%\I2t`!)OB7DUA"`f.QNq5$u))j)+AOc'OLCDuNEor-a"$r8FQNgoBX'afCCmmW@:GVXg)Q*Utf]Zu)lnFe+bsZ1+)mrfW)RIT*4_F).ifL/aJh\nQ[&b`/Sp<@!hZ2/G6VKB;gX<,V(f>l'koDX$;!J8%:5$AV8JQV7B51ML(YasQh2lVNAq5)=XB<PnpCOB6WQ:N]RCj]^8_8,XQSJ0m"?9qrkbN@GhU4'%[Z`BQTb9K-[VDs]/%A;AJ$-8fX_^jg-"ATN2/WO_ZU._!O.#++iUE-Z9[U^9.AJR?:4^Q<i,l)o?H&<oR>97mLK*cS!!Y[4@aOB=hNbB4eB[&]LtH=+g#H4m:DYOL/Pc:lb("k59],`o*E!AuuWSL2&#V1Q1s$>e7@@8rQZ:>9oZ>H>*K)R0-&;6@MhFf0^2OP<K0OX>3T\Ctj.A*TNe0WhU[n6UGO;1n2(=8i\9GJ/ZlX$\8`QVo?%8eHjjbCC7k#"hE,BH9so("Sa%s']mHs17\PIKI]&hs^~>endstream
|
||||||
|
endobj
|
||||||
|
xref
|
||||||
|
0 10
|
||||||
|
0000000000 65535 f
|
||||||
|
0000000061 00000 n
|
||||||
|
0000000112 00000 n
|
||||||
|
0000000219 00000 n
|
||||||
|
0000000331 00000 n
|
||||||
|
0000000414 00000 n
|
||||||
|
0000000617 00000 n
|
||||||
|
0000000685 00000 n
|
||||||
|
0000001252 00000 n
|
||||||
|
0000001311 00000 n
|
||||||
|
trailer
|
||||||
|
<<
|
||||||
|
/ID
|
||||||
|
[<25c9ea8180f2dc042a4e92e7a19986c9><25c9ea8180f2dc042a4e92e7a19986c9>]
|
||||||
|
% ReportLab generated PDF document -- digest (opensource)
|
||||||
|
|
||||||
|
/Info 7 0 R
|
||||||
|
/Root 6 0 R
|
||||||
|
/Size 10
|
||||||
|
>>
|
||||||
|
startxref
|
||||||
|
2527
|
||||||
|
%%EOF
|
||||||
80
generated_pdfs/20260222(請求書)1_新しい商品_1円_d67f16b0.PDF
Normal file
80
generated_pdfs/20260222(請求書)1_新しい商品_1円_d67f16b0.PDF
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
%PDF-1.3
|
||||||
|
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||||
|
1 0 obj
|
||||||
|
<<
|
||||||
|
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
2 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
3 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
4 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
5 0 obj
|
||||||
|
<<
|
||||||
|
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
|
||||||
|
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||||
|
>> /Rotate 0 /Trans <<
|
||||||
|
|
||||||
|
>>
|
||||||
|
/Type /Page
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
6 0 obj
|
||||||
|
<<
|
||||||
|
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
7 0 obj
|
||||||
|
<<
|
||||||
|
/Author (SELF001) /CreationDate (D:20260222051105+09'00') /Creator (anonymous) /Keywords (payload_hash=662182dc-8024-43ee-bba5-7072917b95fe,node_id=2026-02-21 20:09:29) /ModDate (D:20260222051105+09'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||||
|
/Subject (3a807978-61f3-43a8-a463-11b792d2ed12) /Title (\376\377\212\313lBf\370\000 \0002\0000\0002\0006\0000\0002\0002\0002\000-\0000\0005\0000\0009) /Trapped /False
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
8 0 obj
|
||||||
|
<<
|
||||||
|
/Count 1 /Kids [ 5 0 R ] /Type /Pages
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
9 0 obj
|
||||||
|
<<
|
||||||
|
/Filter [ /ASCII85Decode /FlateDecode ] /Length 667
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
Gatm:hhr.&&:X(TOiLI@SBU&,hbH>njCg\]"@9O&5s`#<rr3L(@[l3?k-eJF$RI(U2tP:)1/k;O5+R2<4Xp'$=0LLsV+L@;Pr<#LJ$3be:#76d-LF`^0^S,#$1#AqMHY:."cEG1&e[u2h;N<tU&(AjHi;.I8gIf15YI,*+>`kXUG8Sq?><ChIBX)eOlJ![M3#*/DQ=&b*RCUY2?i=h3*cY?;:"9tj$MbkG/#.-7j<85(1T6\8f9K:@s0TP0GnG-8QnRJ7KkJ+fhNP[(cilYQ7B]_Je('&;PtJ6cPMdV";Dfu`C.m`-$%qWp=HRh>!pY<P/d#oaB,WYJk-8(r1CB=^G53;@Rm]%_)(W'8]=9)E:aX@ZhXe#+I.ed1-)J(OtnQGBO_MN9#b>0@&33B>@(#P&K2_lXjp'bMY8pcU:gUU.F/Q_p9fQ>]<'Y?KO5?TTXndA0k_V:f;*a>ISe5s*q?>m&a[0m0mJuI1PFijAP@cE*[%cn-O)4AJhir6.tJt8aYX3XhH`8@R__N&aMV>rel+No^f^+uhEXcV5P_BO<Ca#aRNWts+i,A4V*>U@/tCB:cnT+[?E0d&.RSGMBeoYoqn8,VanOsg\`Xr)CW$efcD.`t;RtTM54@sshEHD$q/X6bH2%*mdsedVDA<#d7W&,+k4]X*~>endstream
|
||||||
|
endobj
|
||||||
|
xref
|
||||||
|
0 10
|
||||||
|
0000000000 65535 f
|
||||||
|
0000000061 00000 n
|
||||||
|
0000000112 00000 n
|
||||||
|
0000000219 00000 n
|
||||||
|
0000000331 00000 n
|
||||||
|
0000000414 00000 n
|
||||||
|
0000000617 00000 n
|
||||||
|
0000000685 00000 n
|
||||||
|
0000001131 00000 n
|
||||||
|
0000001190 00000 n
|
||||||
|
trailer
|
||||||
|
<<
|
||||||
|
/ID
|
||||||
|
[<2928a616d9b2f3d911c24a90037fdead><2928a616d9b2f3d911c24a90037fdead>]
|
||||||
|
% ReportLab generated PDF document -- digest (opensource)
|
||||||
|
|
||||||
|
/Info 7 0 R
|
||||||
|
/Root 6 0 R
|
||||||
|
/Size 10
|
||||||
|
>>
|
||||||
|
startxref
|
||||||
|
1947
|
||||||
|
%%EOF
|
||||||
80
generated_pdfs/20260222(請求書)55_請求書分_25円_f176c22b.PDF
Normal file
80
generated_pdfs/20260222(請求書)55_請求書分_25円_f176c22b.PDF
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
%PDF-1.3
|
||||||
|
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||||
|
1 0 obj
|
||||||
|
<<
|
||||||
|
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
2 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
3 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
4 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
5 0 obj
|
||||||
|
<<
|
||||||
|
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
|
||||||
|
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||||
|
>> /Rotate 0 /Trans <<
|
||||||
|
|
||||||
|
>>
|
||||||
|
/Type /Page
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
6 0 obj
|
||||||
|
<<
|
||||||
|
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
7 0 obj
|
||||||
|
<<
|
||||||
|
/Author (SELF001) /CreationDate (D:20260222041448+09'00') /Creator (anonymous) /Keywords (payload_hash=012d6104f2921c04064d3aa43d28fae3b4c1a73002ac30b4fd5ee36f0a50bb73,chain_hash=848546f0726b72be38f5ff2df9b6902260fcbc738699f39e28f3f3a77de294ba,node_id=662182dc-8024-43ee-bba5-7072917b95fe) /ModDate (D:20260222041448+09'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||||
|
/Subject (7f6354c6-826b-4b1c-b83a-ad90c14ead44) /Title (\376\377\212\313lBf\370\000 \0002\0000\0002\0006\0000\0002\0002\0002\000-\0000\0004\0001\0004) /Trapped /False
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
8 0 obj
|
||||||
|
<<
|
||||||
|
/Count 1 /Kids [ 5 0 R ] /Type /Pages
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
9 0 obj
|
||||||
|
<<
|
||||||
|
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1084
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
Gatm9>Ap$$'Roe[5Wim-1S$T0DeY\5W?SrS=-]es6F/Aa<5<<XY[U'#mldmj(3V.+<=9+f1["V*DpAn)_aB0&>']!!>OT1rLe"DQbrroUpU20WpY2`7:-HaH3E8V@jQ,Mk80fDu&MJg&&f=Ru0OeZaS%>c[Gh]tLr,(>OTcaM$Ud3N56%Y'Sn2\kFA2?]C]D@RCQrHUa(0qVq(1TAG-MAjbo!im]Ztt?YMq%!LeAnRBl_DK(e@2unBLj+A8d!9D+.Q%JUPm@+BT2!\EQR;Jg<=4d+i)c+Hl`jA+G0kcCJ9g(UJQY3QSq/]V#>-g$&0#r-gPTClaThB;&GJcFhBFqO<Ulm)N0VLIMHd+6#%lIs3Fp,i+S54eWD%05p<#i3QTFA5DCQ>caGJ''.RB:Q8=R@1+1;%QiJ$p,ap7@;(eeL[bqQh'-lku(@1"9F#XaGct/.Y.@>A%LkFruRNn_dKtVE+:__%gO1)n#_@[`!3KZsoj=k.U-ktUc;:OY+*-5^Kj3)i5(cK#p;>#5IP%tj;cp:8Z<]W)UfQ4'8[M=/LOM*>NZoB?)q$Jg.Vti/mHDkChKMePt0Ik+3c^55%^YaM8iI1:?]0AL9^ABY\q7#+JpoC%@C9QsDUo8@(4IDutD!f:B"7`SnZtl579TrGeFmph85:1V!Dem%)n#c2tOj:8PZn9p^AT!u0QV";0!s0W21gTS=D;G6e:Y1&m?,,apL]GnSdOjT9iA"E,R+\jI9^NJe\F6h#(Y#8W3O,G#i1[(kClt0^m])glNe,3nW)mXGS*-o),'$tt"shJn:rf28rQMW_;s`<@PCF%U'"q#FU.oK+TA4qaFR9G0#ZtF1?!XsNh`upF9Z>IfJ<S7%J@$sU-&Q;KTJ5I.B>t(dSJFMI6XX<3MaVH/@')4TfFNZ]:,eg'dri?n\gpE=4NeBdCL7.skA>+cHW+YRHcBg(+%rZ@jKRD+Wkpc[--h,*08],P]krK*NYV68<0q=IFCj@+]X5,XgOQ-,:7'gAYLdG1o\CJdT\^)_a/Fc$8CJ)jaTPCNTW$WLHq2UmVjIs9(?(KsUGL3oVo`*?ouaoC#PN1dbQ~>endstream
|
||||||
|
endobj
|
||||||
|
xref
|
||||||
|
0 10
|
||||||
|
0000000000 65535 f
|
||||||
|
0000000061 00000 n
|
||||||
|
0000000112 00000 n
|
||||||
|
0000000219 00000 n
|
||||||
|
0000000331 00000 n
|
||||||
|
0000000414 00000 n
|
||||||
|
0000000617 00000 n
|
||||||
|
0000000685 00000 n
|
||||||
|
0000001252 00000 n
|
||||||
|
0000001311 00000 n
|
||||||
|
trailer
|
||||||
|
<<
|
||||||
|
/ID
|
||||||
|
[<01d09886f5028a2a9435365de8e79ef4><01d09886f5028a2a9435365de8e79ef4>]
|
||||||
|
% ReportLab generated PDF document -- digest (opensource)
|
||||||
|
|
||||||
|
/Info 7 0 R
|
||||||
|
/Root 6 0 R
|
||||||
|
/Size 10
|
||||||
|
>>
|
||||||
|
startxref
|
||||||
|
2486
|
||||||
|
%%EOF
|
||||||
80
generated_pdfs/20260222(請求書)66_請求書分_36円_4e79d0e3.PDF
Normal file
80
generated_pdfs/20260222(請求書)66_請求書分_36円_4e79d0e3.PDF
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
%PDF-1.3
|
||||||
|
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||||
|
1 0 obj
|
||||||
|
<<
|
||||||
|
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
2 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
3 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
4 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
5 0 obj
|
||||||
|
<<
|
||||||
|
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
|
||||||
|
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||||
|
>> /Rotate 0 /Trans <<
|
||||||
|
|
||||||
|
>>
|
||||||
|
/Type /Page
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
6 0 obj
|
||||||
|
<<
|
||||||
|
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
7 0 obj
|
||||||
|
<<
|
||||||
|
/Author (SELF001) /CreationDate (D:20260222041658+09'00') /Creator (anonymous) /Keywords (payload_hash=90f63ed3cdbc2690fcbf2e233cef84ef0022e585d30183d5e1e91483329ed536,chain_hash=97c49f63cf0283a76d335c5b5ac3747a1fba1eedc89d88d7e8f074823545247d,node_id=662182dc-8024-43ee-bba5-7072917b95fe) /ModDate (D:20260222041658+09'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||||
|
/Subject (f3e9954a-a680-4f2a-9f78-0b69030f98ba) /Title (\376\377\212\313lBf\370\000 \0002\0000\0002\0006\0000\0002\0002\0002\000-\0000\0004\0001\0006) /Trapped /False
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
8 0 obj
|
||||||
|
<<
|
||||||
|
/Count 1 /Kids [ 5 0 R ] /Type /Pages
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
9 0 obj
|
||||||
|
<<
|
||||||
|
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1082
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
Gatm9>Ap;q'RnB35Wm;oK'OAqn@!2CdT3EE<C`=SVEu=X)_/Y0@%rW]q<pIY-4J*p[S\7p0ZWAQS^5?p_sicHS^j>+rRUl6-fPa'D$uDD`4bP.n,;rpOAh3\-`7U!PFNUuKE@!t`l*dC,sr*@2&NSSUJ92oDnPJp$i[SQa&%j!*`AYHJKR7uE:b,`C9e_Pb[(1f(edI7@MW;bEu&7Ga<pF*VW,+0DR=53l&4'UMq#eI0C,CR"k:#l0ka)t;b@/9ae=:mA9<qO(QB#s+YL8A6(8a/-3Q<_8^7E))._*%BT3=M@MHptkgDpOV>Y6hKa]17:=e)df5[WdTI;#3lZcom+A#lg2&7:%r$pR5K[aN`s.;7%i-:@DeWCJRJg*\;F-)fL4,,-:caGJ''1lRY(,M!j1+1;%=9paD8N^(gUHE'rfn)">9oQ;p>HEl-cJ_/f5aO3W7**63N&[1gX#Y3X=QFj>M;h(=GdIq*(QR-%bDB>9,_mfnU/1pj*5rEfkEn'#).2Mfa0>([MULb.8??)25R/IR=R"=G@*bh'fiI*l6h\B-dGg8?k:==VT(^Xcl(OE>&Oqmn_l+OkN\MVnI_YjN_u'(mGCP"QIJ77Jo5D)sa]C\_oj0M:C"X1IIF)h4R`8/$#NB+f=l3@\lSbkFBAleOIR;+DhDK'*h&G[4,F.GomQ.QUbJLWoWmXAe)?`BWBY*'XS&YF%:Y1&uXBW7t,/?%.FGkE26kW*gbY?[?]!85_gcMXe"Z<9.:9<[aGUT$d;eA(-qKf'oA"`?IEXH)eMPAQr7%pVUK>d$nlM0tOTBe+FbIp&Hnuol2U3C<XG+%TaPP`\>C2@T+!R#8nDb?Me>KG/eR!AH8E&+sFO9VX3OYkAcM(&rpdlQ.K<#A"_!X;-+3%VE=el[?RrD6%"<Vm(dIIGrJI8p=-H'(Erq[1\6Df_9$lWV-^1KJkq=;dC%LY[D\Qe(Fa[0AaC8QB]t9fj&.XN3sh<Fon!=0>1bAP@H[!D@40Wk>g4dqBosh&HBeh@<i3a?_MUknd%6EQD.QKZ!mEW!_N.OoaEr(c,F8Ei8i5a]\T8b.IKT=-7p&~>endstream
|
||||||
|
endobj
|
||||||
|
xref
|
||||||
|
0 10
|
||||||
|
0000000000 65535 f
|
||||||
|
0000000061 00000 n
|
||||||
|
0000000112 00000 n
|
||||||
|
0000000219 00000 n
|
||||||
|
0000000331 00000 n
|
||||||
|
0000000414 00000 n
|
||||||
|
0000000617 00000 n
|
||||||
|
0000000685 00000 n
|
||||||
|
0000001252 00000 n
|
||||||
|
0000001311 00000 n
|
||||||
|
trailer
|
||||||
|
<<
|
||||||
|
/ID
|
||||||
|
[<57920ecfd0977d95960c71d8bad504ba><57920ecfd0977d95960c71d8bad504ba>]
|
||||||
|
% ReportLab generated PDF document -- digest (opensource)
|
||||||
|
|
||||||
|
/Info 7 0 R
|
||||||
|
/Root 6 0 R
|
||||||
|
/Size 10
|
||||||
|
>>
|
||||||
|
startxref
|
||||||
|
2484
|
||||||
|
%%EOF
|
||||||
80
generated_pdfs/20260222(請求書)77_請求書分_49円_64fe98b2.PDF
Normal file
80
generated_pdfs/20260222(請求書)77_請求書分_49円_64fe98b2.PDF
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
%PDF-1.3
|
||||||
|
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||||
|
1 0 obj
|
||||||
|
<<
|
||||||
|
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
2 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
3 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
4 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
5 0 obj
|
||||||
|
<<
|
||||||
|
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
|
||||||
|
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||||
|
>> /Rotate 0 /Trans <<
|
||||||
|
|
||||||
|
>>
|
||||||
|
/Type /Page
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
6 0 obj
|
||||||
|
<<
|
||||||
|
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
7 0 obj
|
||||||
|
<<
|
||||||
|
/Author (SELF001) /CreationDate (D:20260222042006+09'00') /Creator (anonymous) /Keywords (payload_hash=a53f29c42e97fe09d71917e441a34a049c87341b989851217881e22c3f2a3a36,chain_hash=129dd46213dd83955ed0f17a9ef82c19d985154cd52ff634ed3b1f9f5b3bfcda,node_id=662182dc-8024-43ee-bba5-7072917b95fe) /ModDate (D:20260222042006+09'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||||
|
/Subject (df40aa49-4cb1-43d4-a481-0702c391cfd3) /Title (\376\377\212\313lBf\370\000 \0002\0000\0002\0006\0000\0002\0002\0002\000-\0000\0004\0002\0000) /Trapped /False
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
8 0 obj
|
||||||
|
<<
|
||||||
|
/Count 1 /Kids [ 5 0 R ] /Type /Pages
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
9 0 obj
|
||||||
|
<<
|
||||||
|
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1085
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
Gatm9>Ap;q'RnB35Wm;oK'O@6n@!2CdT3EE<C`=SVEu=X)_/Y0@%rW]q<pIY-4J*p[S\7p0ZWAQS^5?p_sicHS^j>+rRUl6-fPa'D$uDD`4bP.n,;rpOAh3\-`7Q6:3(As&IKdm)A>o`.LIo/emQGAN&FDZ]^`F[0DO;9*CE+"GY!Cg"bHjp_t#h7e7:@)RCi<V0pmbnLfo+&bZTnd+Ig<ER#9q\\^@\hVCtiF02`mm^9!A:(Js#O`h4Jp9IUE)Vg*/=JW)3:j.\8[1W0G5,A8m.c%H(043;b5."_pH%';6M:lJp1LG!G>>Y+bHC^M%L(n@\6M6>l2WBa>oq)[@L+XeP<PT#I@9R[^p4G)(W3;S-]>_D'&N`S_CL^B6'ZKE>d)g;]d[%D2@p.%Tf9Iscs2e5[N&[;m\*0YWMHq/J'j(/VDi&!1*^2:,=IQ3)r5lk92#SJ9g?S^VKqQ/i#.:Ua$`Y"*)Gk#GdS1bke@?qS3e4:'J7`[7br&KWTrm*<37Phd&G7J%KG)9\hoO9)s/de8(&7hkaC,3$V<9n?Nn\u`!@BsQd8F5p_?j9F(C$bIgbL-Zk-t:)m*#FVi+)ZPBrU@`%oTscOI(Xn%A,>e8[l;E15;Vt=232J)'IJ7TD-*1G:](IW?i+!`=]=WEX]9#m;s&NqkX=8bC>[hdl[pFIkH4/5YQ`4e['cp^7b&C[;M&SnhVXgBrV01?I]fbV\iV+O1n\rKGsZM&"XrL[lYG>/e3<;kf'.dT<'Mb]F9=Xic%@H$SMko0e*Sm:GSrMq/i?)FBdf]P<Mr,lFU`Kkq:3f6QaPr3*\dEAi%*3e1bZJboZbMVk?^$S[#]b![GNp>:%p5MkU/KAq?q6t\K6k+KqK]cGnrf8npiNuKAB:VJ]&0<.!KZ5BEtWDq?ZtlOOU<('7BZ5\S:o?!lX[SKsLCeTRG\Z0"]`CK"ks"p?Jn<.SgSerN7cTeTkm=GlEl+hVO`F.,\3iP@gi;d^H>aQ\rqQp20tuelYptD`t#G6Kl$?r^"4<\rMo*?qAbm$]^M3EPSn$JSK6I.(Bij/2>CO9X5jTrmTr0rd*[3r<$G3IA[~>endstream
|
||||||
|
endobj
|
||||||
|
xref
|
||||||
|
0 10
|
||||||
|
0000000000 65535 f
|
||||||
|
0000000061 00000 n
|
||||||
|
0000000112 00000 n
|
||||||
|
0000000219 00000 n
|
||||||
|
0000000331 00000 n
|
||||||
|
0000000414 00000 n
|
||||||
|
0000000617 00000 n
|
||||||
|
0000000685 00000 n
|
||||||
|
0000001252 00000 n
|
||||||
|
0000001311 00000 n
|
||||||
|
trailer
|
||||||
|
<<
|
||||||
|
/ID
|
||||||
|
[<879018508aff289d4299c03909daffe1><879018508aff289d4299c03909daffe1>]
|
||||||
|
% ReportLab generated PDF document -- digest (opensource)
|
||||||
|
|
||||||
|
/Info 7 0 R
|
||||||
|
/Root 6 0 R
|
||||||
|
/Size 10
|
||||||
|
>>
|
||||||
|
startxref
|
||||||
|
2487
|
||||||
|
%%EOF
|
||||||
80
generated_pdfs/20260222(請求書)88_新しい商品_0円_60b38dbf.PDF
Normal file
80
generated_pdfs/20260222(請求書)88_新しい商品_0円_60b38dbf.PDF
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
%PDF-1.3
|
||||||
|
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||||
|
1 0 obj
|
||||||
|
<<
|
||||||
|
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
2 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
3 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
4 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
5 0 obj
|
||||||
|
<<
|
||||||
|
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
|
||||||
|
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||||
|
>> /Rotate 0 /Trans <<
|
||||||
|
|
||||||
|
>>
|
||||||
|
/Type /Page
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
6 0 obj
|
||||||
|
<<
|
||||||
|
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
7 0 obj
|
||||||
|
<<
|
||||||
|
/Author (SELF001) /CreationDate (D:20260222043242+09'00') /Creator (anonymous) /Keywords (payload_hash=662182dc-8024-43ee-bba5-7072917b95fe,chain_hash=6308ea7dd46d1e712d09320af0812c99d27cbce5f9b4f40f06796f1a1bdf4fdf,node_id=2026-02-21 19:32:03) /ModDate (D:20260222043242+09'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||||
|
/Subject (604e194d-7513-4723-8614-9505a0325a0e) /Title (\376\377\212\313lBf\370\000 \0002\0000\0002\0006\0000\0002\0002\0002\000-\0000\0004\0003\0002) /Trapped /False
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
8 0 obj
|
||||||
|
<<
|
||||||
|
/Count 1 /Kids [ 5 0 R ] /Type /Pages
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
9 0 obj
|
||||||
|
<<
|
||||||
|
/Filter [ /ASCII85Decode /FlateDecode ] /Length 612
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
Gatm99kt\&&A@sBkdW3d3Zn4j/T"EW$$J\&66M@WTnPg<gAcZdXCA62?"IkOZ`j^LhRn-^dteFt8,<2Pad@:cH2E^4Z0B"BZ=$CVCTdP7SnGraR-+bFh`U:)3"J2m+qo&4*GXf%Jn+rJG.ZQ\e,O7FlX(GX/HKo!]L8P!MI8CTN?MS9WDfA/+[1KF8M`(7N]'J<2N7"sCK"%KJp^TYT+t[3ch6gWT_c7E0?Ahl1VZ4+cQ&]3j/+VE#NMq:p"#I(X$GL^!0`]@PYbpfNY#<5JnK`J6U%>!`^\Y%h;e\>29E.nG^3Ya4bQ)Z1>.<d,$h-(8UDgl,b'cs>"nJdZ4.&/niSP5'ScfW=:QSkB"3SjMcd++%k'iR-Mf3'8$ujLQ8oCL0%IcKC`Tqb<fQRdaiT(-d"V\e*5/HC>_1po7g2r0V[,Bh=Dk=n-:ic96jUFP4K!mKG?q;36,J^%,Ga8DmbCMklJMM=O`1'FM?iI3PCnQGD#T!l!`djG??q*f9H:n^pn_V"Xl)>WTju1)DH'8E;kB'gUks=Km.X,]9YWeVauO)`XTm#],sMND0\GK!o6#EOrqc0Vec"n/lGMY[0AFa?A0h.lAQF9]4?qCl~>endstream
|
||||||
|
endobj
|
||||||
|
xref
|
||||||
|
0 10
|
||||||
|
0000000000 65535 f
|
||||||
|
0000000061 00000 n
|
||||||
|
0000000112 00000 n
|
||||||
|
0000000219 00000 n
|
||||||
|
0000000331 00000 n
|
||||||
|
0000000414 00000 n
|
||||||
|
0000000617 00000 n
|
||||||
|
0000000685 00000 n
|
||||||
|
0000001207 00000 n
|
||||||
|
0000001266 00000 n
|
||||||
|
trailer
|
||||||
|
<<
|
||||||
|
/ID
|
||||||
|
[<a9fc680f58f9d54c006beed3f88264eb><a9fc680f58f9d54c006beed3f88264eb>]
|
||||||
|
% ReportLab generated PDF document -- digest (opensource)
|
||||||
|
|
||||||
|
/Info 7 0 R
|
||||||
|
/Root 6 0 R
|
||||||
|
/Size 10
|
||||||
|
>>
|
||||||
|
startxref
|
||||||
|
1968
|
||||||
|
%%EOF
|
||||||
80
generated_pdfs/20260222(請求書)88_請求書分_0円_07e20816.PDF
Normal file
80
generated_pdfs/20260222(請求書)88_請求書分_0円_07e20816.PDF
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
%PDF-1.3
|
||||||
|
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||||
|
1 0 obj
|
||||||
|
<<
|
||||||
|
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
2 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
3 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
4 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
5 0 obj
|
||||||
|
<<
|
||||||
|
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
|
||||||
|
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||||
|
>> /Rotate 0 /Trans <<
|
||||||
|
|
||||||
|
>>
|
||||||
|
/Type /Page
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
6 0 obj
|
||||||
|
<<
|
||||||
|
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
7 0 obj
|
||||||
|
<<
|
||||||
|
/Author (SELF001) /CreationDate (D:20260222043203+09'00') /Creator (anonymous) /Keywords (payload_hash=6308ea7dd46d1e712d09320af0812c99d27cbce5f9b4f40f06796f1a1bdf4fdf,chain_hash=d96ac643a3805abb53cb7b774f884b3ac7024e7b665cc913193c9c82226a15ac,node_id=662182dc-8024-43ee-bba5-7072917b95fe) /ModDate (D:20260222043203+09'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||||
|
/Subject (604e194d-7513-4723-8614-9505a0325a0e) /Title (\376\377\212\313lBf\370\000 \0002\0000\0002\0006\0000\0002\0002\0002\000-\0000\0004\0003\0002) /Trapped /False
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
8 0 obj
|
||||||
|
<<
|
||||||
|
/Count 1 /Kids [ 5 0 R ] /Type /Pages
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
9 0 obj
|
||||||
|
<<
|
||||||
|
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1077
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
Gatm9D/Z1=&H88.Z/Uu9'XmnYZLI88?DX\t8ZQ$[Whr*"Q4"G35$4OKVu6;7@L%P1EK(l>ZIcE=o?9>g0Mk0q6\k-37d0_$qX,_g-pu_j;1So)IRNY6=+d%e-CgVUXA3qb9G'fH,8O,j_FXn6>\aW)B0i#aC#5NMh[B7gDau3(JIEj/2'=</EtUY=9g^f`aun4(`8FPPJFMcsR59e5OA1ZN@IeYe*jcnRfSeP<Mql@U0Df8""8'(50mG+:0ZJJap]4kk)-^([`F,M"=@aT*dUke7M#bh=ic@@uK+8qBY:2amJjU7_;q`Y-;"hBK'QAX1,["1^>N_8+M8PF0YEOrEMA:Q9dWfk5nuH:7$;+6ZqL@2RJ>9qU<`_mY-k88tcQKP2pDBK45J+Ls:T-OH7*[Q*kZfed@f\PZ5r<f"@j3&=!<R?bn:6!E@"%hV&`LfNb;mNS'#%nm_<tI.OC93Ae3r7DPV:m/Mp9%ZLIFu"dM)kO=9O/r6@g@Or\N[fBI9&@bu\:%;U-l2EpY.R;NR'%ND;hFjd]MF?,^J^YSSI@&Vn4e?NFa-Bg7Su*a2]M?OSGKXNC"jjRV9lpY-3C]MF!%pW(>/G<[E=s)r`&J+59mn'gDR.@\1"&%_.#ds/.l5eUqdlT8lsh'R9u=njFe0;a,+n!\@Uh&GZGU,:2#h/s8:ObIN8Zq?doemM;]9[iV4hDFY]pN5faWHC`*Idd[8);>c9Eu#E!Nk*:.=uS@EO*g&4H9"^2TBg6<!?'&B_3C?_R_IYCp'<LhLn$i!R%ie$1f:&KVnlhb%=S0M`QNCj[H66d3;G'!$@8'"AXAh!3Mlc2Vi<:q,B.qqohB.aI1$d90mWU'BJR+>M"[WT<3\RW'k+rq>\ehu9*7C(+UBdW77!UfYK#iPl\@Y:S$nsIVsdo[VQVHl4>.?2C0q"pk>UfSHX3Q=n!U2(qH0.B:Cal4XtHj,H"%4nr[19aHZ.W3raS=@R\a#M[!h%j<)glEG8l@F`hjJsMk!9Fd!'E@K6oZgSRBK'J*<1(9d>et@6h@V6H4EWO-^pl,Y/5Sn>3graeS^u'tX5X.]dtu~>endstream
|
||||||
|
endobj
|
||||||
|
xref
|
||||||
|
0 10
|
||||||
|
0000000000 65535 f
|
||||||
|
0000000061 00000 n
|
||||||
|
0000000112 00000 n
|
||||||
|
0000000219 00000 n
|
||||||
|
0000000331 00000 n
|
||||||
|
0000000414 00000 n
|
||||||
|
0000000617 00000 n
|
||||||
|
0000000685 00000 n
|
||||||
|
0000001252 00000 n
|
||||||
|
0000001311 00000 n
|
||||||
|
trailer
|
||||||
|
<<
|
||||||
|
/ID
|
||||||
|
[<a5617b48f25e3dc1ffa4fa2259b7a075><a5617b48f25e3dc1ffa4fa2259b7a075>]
|
||||||
|
% ReportLab generated PDF document -- digest (opensource)
|
||||||
|
|
||||||
|
/Info 7 0 R
|
||||||
|
/Root 6 0 R
|
||||||
|
/Size 10
|
||||||
|
>>
|
||||||
|
startxref
|
||||||
|
2479
|
||||||
|
%%EOF
|
||||||
80
generated_pdfs/20260222(請求書)8_8_64円_bad93f2b.PDF
Normal file
80
generated_pdfs/20260222(請求書)8_8_64円_bad93f2b.PDF
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
%PDF-1.3
|
||||||
|
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||||
|
1 0 obj
|
||||||
|
<<
|
||||||
|
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
2 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
3 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
4 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
5 0 obj
|
||||||
|
<<
|
||||||
|
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
|
||||||
|
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||||
|
>> /Rotate 0 /Trans <<
|
||||||
|
|
||||||
|
>>
|
||||||
|
/Type /Page
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
6 0 obj
|
||||||
|
<<
|
||||||
|
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
7 0 obj
|
||||||
|
<<
|
||||||
|
/Author (SELF001) /CreationDate (D:20260222043354+09'00') /Creator (anonymous) /Keywords (payload_hash=6f14e33e1c394977b23bfd2d844a248cab0f0f7e770b252ddf3c5795d22ecf38,chain_hash=b8509d45bac7636bf8fa08647d343fe51eeb65295660499a82a0396bda80fc36,node_id=662182dc-8024-43ee-bba5-7072917b95fe) /ModDate (D:20260222043354+09'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||||
|
/Subject (a77bd46c-d902-49c4-98c2-946d8c22fb75) /Title (\376\377\212\313lBf\370\000 \0002\0000\0002\0006\0000\0002\0002\0002\000-\0000\0004\0003\0003) /Trapped /False
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
8 0 obj
|
||||||
|
<<
|
||||||
|
/Count 1 /Kids [ 5 0 R ] /Type /Pages
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
9 0 obj
|
||||||
|
<<
|
||||||
|
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1140
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
Gatm9>Ar7S(k'`6&G5$!&]^A38oNP:!\K;*_i+Z91'k0<N<Vsr,q<S)jM1Gam)Y?lapAh#Y\EZuo3KJ!3#FiTs%Y&aq0hZ.p5V+c3pYQE*-#Wid<W@<kkD&D\_X.jWP^pQ9DARFJ-NrSYYmXhBE]Z)6sA,`rQ8:C2l!j24dZ9eE:3j61'A(BL?52(0kE4ER7]Wi"qq@>Qj"kR*8-]<Z3hV0WS!g`PNF<]4pt,X"WsI&NK<KD&DubFUY]ua.J5B-X;;hPN6ZUd8RVa7L^PhiUeOC\;$.f/KZ=9?%+6@;>3Z5V0p50&<Ec@>YKo.kcS35/Z.r#p3N\MQ,UJR+UW*R*MS,$d/D)oPMl:V!Y,O\b5;c[&T\meJ08besP)Q]Wnd_Xc$@32?-\7Zri4ol#i#Bi;?P#2LCVg?=,mZ]\(nBbE5hPgfALt>SL99q_[jPSL`@hK:/u$[>p12%VCKN<jc8g;<SbID_I?MdspuV7>F*LS2oI",O$.+%EN.C)<WNr$mE6N',K`W]p4WA_;R7F8!L.'6k"V/kcOM6=rEtm9V5MDWh-9#ggZ84"DZD]<,5[nHU_Yk1#%$?Q!2UYI(PG?JBVUPo`QEbMtgBHXH50_]QdX<Zf1Op[gqH5U*Cr<p#qL&8@O13N72d\aT^\K\^nFuTUpqogJ[>jMLW2ObXh.9;bkh6L%45sSX8_4kdAPH.CXb!)gF[O#9qe[?lgKSN"&;nrDak@N?^s$q"`FW#h<<aBLG"0[BXfh'FICOCJf\!#@Yo]b`V/+:B`^6:"0\&`rA[RB=rRR\Qo6h>M[&q=QTMX-^\k'-*m]'"4ljXE1g]H2#kBWO_#^K[`)=3`lJggWoiMKbI1r\&4188sUZtL-/eHc#]0!7oWmbL]F\m8U/B\S&/q"o#UXDq8B:F5L'8Gik;f4if;cP;$E7FT1RQu\7o/Ftchf_6YWd+*.Mpj$JPV+nBOjXr]YM4:^<dre]gm`H1-R-"u+CKj+7O'AMVDR1gIIub>s`qQ<idqEsZD5tI?/<,SmjmQ(%R9SM>rpKrp]1H6S;:Cf=p3EW[F0bqFd3^K:f8`9V@/B#N]7W%j04@6k"211A/EJ5?,4X(]RYqCWpB$UV0An%.?^bo/mll]us'HSf`D;k,i4o~>endstream
|
||||||
|
endobj
|
||||||
|
xref
|
||||||
|
0 10
|
||||||
|
0000000000 65535 f
|
||||||
|
0000000061 00000 n
|
||||||
|
0000000112 00000 n
|
||||||
|
0000000219 00000 n
|
||||||
|
0000000331 00000 n
|
||||||
|
0000000414 00000 n
|
||||||
|
0000000617 00000 n
|
||||||
|
0000000685 00000 n
|
||||||
|
0000001252 00000 n
|
||||||
|
0000001311 00000 n
|
||||||
|
trailer
|
||||||
|
<<
|
||||||
|
/ID
|
||||||
|
[<97d9697378727fc55e319f93ce285125><97d9697378727fc55e319f93ce285125>]
|
||||||
|
% ReportLab generated PDF document -- digest (opensource)
|
||||||
|
|
||||||
|
/Info 7 0 R
|
||||||
|
/Root 6 0 R
|
||||||
|
/Size 10
|
||||||
|
>>
|
||||||
|
startxref
|
||||||
|
2542
|
||||||
|
%%EOF
|
||||||
80
generated_pdfs/20260222(請求書)9_9_81円_4d208bf7.PDF
Normal file
80
generated_pdfs/20260222(請求書)9_9_81円_4d208bf7.PDF
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
%PDF-1.3
|
||||||
|
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||||
|
1 0 obj
|
||||||
|
<<
|
||||||
|
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
2 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
3 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
4 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
5 0 obj
|
||||||
|
<<
|
||||||
|
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
|
||||||
|
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||||
|
>> /Rotate 0 /Trans <<
|
||||||
|
|
||||||
|
>>
|
||||||
|
/Type /Page
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
6 0 obj
|
||||||
|
<<
|
||||||
|
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
7 0 obj
|
||||||
|
<<
|
||||||
|
/Author (SELF001) /CreationDate (D:20260222045954+09'00') /Creator (anonymous) /Keywords (payload_hash=662182dc-8024-43ee-bba5-7072917b95fe,chain_hash=056e3b862c025bd6dd40416499f1508e7ab5b79b0e5d367f9dc22e4b5b275051,node_id=2026-02-21 19:59:50) /ModDate (D:20260222045954+09'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||||
|
/Subject (d6c91d92-22e4-47e6-9790-1a4d65886057) /Title (\376\377\212\313lBf\370\000 \0002\0000\0002\0006\0000\0002\0002\0002\000-\0000\0004\0005\0009) /Trapped /False
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
8 0 obj
|
||||||
|
<<
|
||||||
|
/Count 1 /Kids [ 5 0 R ] /Type /Pages
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
9 0 obj
|
||||||
|
<<
|
||||||
|
/Filter [ /ASCII85Decode /FlateDecode ] /Length 636
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
Gatm9gPQ\"&:L1SaC?`&eg8pn>BPXbAO`p:"CWAT"^spnru\>&]pZUQbR=sj9h<R/3`W.YO[8pos1^`9o;X`&hi]-@rAR(ZXQf2uD843iCtK6p*$HBtBf+d2pr&"_crG1dcpoD(K%(eNLM*La;6e_;0<S7UAdR75U]Nt=4?8j.]&I:=l:`;Z,<1pp$>/7lm\JSU7eYlqP#S>%?NfPMi$IZ2Hos#<^2EZYZ>a@:(MI*s`[3.pC1XJ!``iK0XY388Oh+*b/5EWHLDgA.KKuRN4<oLrnh"uAeYe>I#m.,dFtmtuXiqhQTPtoe63NFR,Yc]haB,WYUIpFnrh$UWIT,+DAk-i3&;6m']d<=pC<`G:$S5&hae_#m$a31:`%1[XKOdf5<+cp82C(QNBOEZ-:LP98O?E[V.fM`<q@K2W3LateXXa_JPis@W[,q\g/BMaV]74%c/VUSr70pQ[]4=BEqek5k[B.4LgDD(;J+7?r`[ab5%n#oqVdQo,qr"3GhEi,Ys5\5jR_?6,almou*6H,"Qb^'WXhIU"WC/eD%$=:oSK2QAR8PP-Q17r.YDq[<^Ydql:$5Vn1OpW@Si((6'[5D$e,Je.mDJgjchI=+2\5@@mWVlUPMeZAbiTEkGiuX~>endstream
|
||||||
|
endobj
|
||||||
|
xref
|
||||||
|
0 10
|
||||||
|
0000000000 65535 f
|
||||||
|
0000000061 00000 n
|
||||||
|
0000000112 00000 n
|
||||||
|
0000000219 00000 n
|
||||||
|
0000000331 00000 n
|
||||||
|
0000000414 00000 n
|
||||||
|
0000000617 00000 n
|
||||||
|
0000000685 00000 n
|
||||||
|
0000001207 00000 n
|
||||||
|
0000001266 00000 n
|
||||||
|
trailer
|
||||||
|
<<
|
||||||
|
/ID
|
||||||
|
[<de88d99137c64e7897664c8aac3e1f8d><de88d99137c64e7897664c8aac3e1f8d>]
|
||||||
|
% ReportLab generated PDF document -- digest (opensource)
|
||||||
|
|
||||||
|
/Info 7 0 R
|
||||||
|
/Root 6 0 R
|
||||||
|
/Size 10
|
||||||
|
>>
|
||||||
|
startxref
|
||||||
|
1992
|
||||||
|
%%EOF
|
||||||
|
|
@ -15,6 +15,7 @@ class DocumentType(Enum):
|
||||||
INVOICE = "請求書"
|
INVOICE = "請求書"
|
||||||
RECEIPT = "領収書"
|
RECEIPT = "領収書"
|
||||||
SALES = "売上伝票"
|
SALES = "売上伝票"
|
||||||
|
DRAFT = "下書き" # 下書きタイプを追加
|
||||||
|
|
||||||
class Product:
|
class Product:
|
||||||
"""商品マスタモデル"""
|
"""商品マスタモデル"""
|
||||||
|
|
@ -135,7 +136,9 @@ class Invoice:
|
||||||
is_shared: bool = False,
|
is_shared: bool = False,
|
||||||
document_type: DocumentType = DocumentType.INVOICE,
|
document_type: DocumentType = DocumentType.INVOICE,
|
||||||
file_path: Optional[str] = None,
|
file_path: Optional[str] = None,
|
||||||
uuid: Optional[str] = None):
|
uuid: Optional[str] = None,
|
||||||
|
is_draft: bool = False, # 下書きフラグ
|
||||||
|
draft_parent_uuid: Optional[str] = None): # 下書き元のUUID
|
||||||
import uuid as uuid_module
|
import uuid as uuid_module
|
||||||
self.uuid = uuid or str(uuid_module.uuid4())
|
self.uuid = uuid or str(uuid_module.uuid4())
|
||||||
self.customer = customer
|
self.customer = customer
|
||||||
|
|
@ -146,6 +149,8 @@ class Invoice:
|
||||||
self.is_shared = is_shared
|
self.is_shared = is_shared
|
||||||
self.document_type = document_type
|
self.document_type = document_type
|
||||||
self.file_path = file_path
|
self.file_path = file_path
|
||||||
|
self.is_draft = is_draft
|
||||||
|
self.draft_parent_uuid = draft_parent_uuid
|
||||||
|
|
||||||
def _generate_invoice_number(self) -> str:
|
def _generate_invoice_number(self) -> str:
|
||||||
"""請求書番号を生成"""
|
"""請求書番号を生成"""
|
||||||
|
|
|
||||||
|
|
@ -87,12 +87,12 @@ class InvoiceService:
|
||||||
invoice.company_info_version = "v1"
|
invoice.company_info_version = "v1"
|
||||||
invoice.submitted_to_tax_authority = False
|
invoice.submitted_to_tax_authority = False
|
||||||
|
|
||||||
def create_invoice(self,
|
def create_draft_invoice(self,
|
||||||
customer: Customer,
|
customer: Customer,
|
||||||
document_type: DocumentType,
|
document_type: DocumentType,
|
||||||
amount: int,
|
amount: int,
|
||||||
notes: str = "") -> Optional[Invoice]:
|
notes: str = "") -> Optional[Invoice]:
|
||||||
"""新規伝票作成
|
"""下書き伝票作成
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
customer: 顧客情報
|
customer: 顧客情報
|
||||||
|
|
@ -104,12 +104,65 @@ class InvoiceService:
|
||||||
作成されたInvoice、失敗時はNone
|
作成されたInvoice、失敗時はNone
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
# 初期明細作成
|
# 下書き伝票を作成
|
||||||
items = [InvoiceItem(
|
invoice = Invoice(
|
||||||
description=f"{document_type.value}分",
|
customer=customer,
|
||||||
quantity=1,
|
date=datetime.now(),
|
||||||
unit_price=amount
|
items=[], # 下書きは空の明細で開始
|
||||||
)]
|
document_type=document_type,
|
||||||
|
notes=notes,
|
||||||
|
is_draft=True # 下書きフラグを設定
|
||||||
|
)
|
||||||
|
|
||||||
|
# DBに保存
|
||||||
|
saved_invoice = self.invoice_repo.save_invoice(invoice)
|
||||||
|
|
||||||
|
if saved_invoice:
|
||||||
|
logging.info(f"下書き伝票作成成功: {saved_invoice.invoice_number}")
|
||||||
|
return saved_invoice
|
||||||
|
else:
|
||||||
|
logging.error("下書き伝票作成失敗")
|
||||||
|
return None
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"下書き伝票作成エラー: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def create_invoice(self,
|
||||||
|
customer: Customer,
|
||||||
|
document_type: DocumentType,
|
||||||
|
amount: int,
|
||||||
|
notes: str = "",
|
||||||
|
items: List[InvoiceItem] = None) -> Optional[Invoice]:
|
||||||
|
"""新規伝票作成
|
||||||
|
|
||||||
|
Args:
|
||||||
|
customer: 顧客情報
|
||||||
|
document_type: 帳票種類
|
||||||
|
amount: 金額(税抜)
|
||||||
|
notes: 備考
|
||||||
|
items: 明細リスト(指定しない場合はダミーを作成)
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
作成されたInvoice、失敗時はNone
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# 明細作成(指定された明細を使用、なければダミーを作成)
|
||||||
|
if items is None:
|
||||||
|
items = [InvoiceItem(
|
||||||
|
description=f"{document_type.value}分",
|
||||||
|
quantity=1,
|
||||||
|
unit_price=amount
|
||||||
|
)]
|
||||||
|
|
||||||
|
# 空の明細リストの場合は保存しない(全て空の場合のみ)
|
||||||
|
if not items or all(item.description == "" and item.quantity == 0 and item.unit_price == 0 for item in items):
|
||||||
|
logging.warning(f"明細が空のため伝票作成を中止: {customer.name}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
# 空行をフィルタリングせず、そのまま保存(ユーザーが意図した空行を保持)
|
||||||
|
# TODO: 必要に応じて空行を除外するオプションを提供
|
||||||
|
filtered_items = items
|
||||||
|
|
||||||
# 伝票作成
|
# 伝票作成
|
||||||
invoice = Invoice(
|
invoice = Invoice(
|
||||||
|
|
@ -121,7 +174,8 @@ class InvoiceService:
|
||||||
)
|
)
|
||||||
|
|
||||||
# --- 長期保管向け: canonical payload + hash chain ---
|
# --- 長期保管向け: canonical payload + hash chain ---
|
||||||
self._apply_audit_fields(invoice, customer)
|
# TODO: ユーザーが明示的に要求した場合のみ実行するべき
|
||||||
|
# self._apply_audit_fields(invoice, customer)
|
||||||
|
|
||||||
# DB保存(PDFは仮生成物なので保存の成否と切り離す)
|
# DB保存(PDFは仮生成物なので保存の成否と切り離す)
|
||||||
invoice.file_path = None
|
invoice.file_path = None
|
||||||
|
|
@ -131,16 +185,17 @@ class InvoiceService:
|
||||||
logging.error("伝票DB保存失敗")
|
logging.error("伝票DB保存失敗")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# PDF生成(任意・仮生成物)
|
# PDF生成はユーザーが明示的に要求した場合のみ実行
|
||||||
try:
|
# TODO: 自動生成は無効化するべき
|
||||||
pdf_path = self.pdf_generator.generate_invoice_pdf(invoice, self.company_info)
|
# try:
|
||||||
if pdf_path:
|
# pdf_path = self.pdf_generator.generate_invoice_pdf(invoice, self.company_info)
|
||||||
invoice.file_path = pdf_path
|
# if pdf_path:
|
||||||
invoice.pdf_generated_at = datetime.now().replace(microsecond=0).isoformat()
|
# invoice.file_path = pdf_path
|
||||||
else:
|
# invoice.pdf_generated_at = datetime.now().replace(microsecond=0).isoformat()
|
||||||
logging.warning("PDF生成失敗(DB保存は完了)")
|
# else:
|
||||||
except Exception as e:
|
# logging.warning("PDF生成失敗(DB保存は完了)")
|
||||||
logging.warning(f"PDF生成例外(DB保存は完了): {e}")
|
# except Exception as e:
|
||||||
|
# logging.warning(f"PDF生成例外(DB保存は完了): {e}")
|
||||||
|
|
||||||
return invoice
|
return invoice
|
||||||
|
|
||||||
|
|
@ -254,6 +309,22 @@ class InvoiceService:
|
||||||
logging.warning(f"PDF削除失敗: {e}")
|
logging.warning(f"PDF削除失敗: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def update_invoice(self, invoice: Invoice) -> bool:
|
||||||
|
"""伝票を更新"""
|
||||||
|
try:
|
||||||
|
return self.invoice_repo.update_invoice(invoice)
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"伝票更新エラー: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
def delete_invoice_by_uuid(self, invoice_uuid: str) -> bool:
|
||||||
|
"""UUIDで伝票を削除"""
|
||||||
|
try:
|
||||||
|
return self.invoice_repo.delete_invoice_by_uuid(invoice_uuid)
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"伝票削除エラー: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
def delete_invoice(self, invoice_id: int) -> bool:
|
def delete_invoice(self, invoice_id: int) -> bool:
|
||||||
"""伝票を削除"""
|
"""伝票を削除"""
|
||||||
return self.invoice_repo.delete_invoice(invoice_id)
|
return self.invoice_repo.delete_invoice(invoice_id)
|
||||||
|
|
@ -282,7 +353,7 @@ class CustomerService:
|
||||||
self._customer_cache: List[Customer] = []
|
self._customer_cache: List[Customer] = []
|
||||||
self._load_customers()
|
self._load_customers()
|
||||||
|
|
||||||
def create_customer(self, name: str, formal_name: str, address: str = "", phone: str = "") -> Customer:
|
def create_customer(self, name: str, formal_name: str, address: str = "", phone: str = "") -> int:
|
||||||
"""顧客を新規作成"""
|
"""顧客を新規作成"""
|
||||||
customer = Customer(
|
customer = Customer(
|
||||||
id=0, # 新規はID=0
|
id=0, # 新規はID=0
|
||||||
|
|
@ -295,9 +366,10 @@ class CustomerService:
|
||||||
if success:
|
if success:
|
||||||
self._customer_cache.append(customer)
|
self._customer_cache.append(customer)
|
||||||
logging.info(f"新規顧客登録: {formal_name}")
|
logging.info(f"新規顧客登録: {formal_name}")
|
||||||
|
return customer.id # IDを返す
|
||||||
else:
|
else:
|
||||||
logging.error(f"新規顧客登録失敗: {formal_name}")
|
logging.error(f"新規顧客登録失敗: {formal_name}")
|
||||||
return customer if success else None
|
return 0 # 失敗時は0を返す
|
||||||
|
|
||||||
def _load_customers(self):
|
def _load_customers(self):
|
||||||
"""顧客データを読み込み"""
|
"""顧客データを読み込み"""
|
||||||
|
|
|
||||||
|
|
@ -294,9 +294,9 @@ class InvoiceRepository:
|
||||||
invoice.customer.formal_name,
|
invoice.customer.formal_name,
|
||||||
invoice.customer.address,
|
invoice.customer.address,
|
||||||
invoice.customer.phone,
|
invoice.customer.phone,
|
||||||
invoice.subtotal,
|
0, # amount - 計算値を保存しない
|
||||||
invoice.tax,
|
0, # tax - 計算値を保存しない
|
||||||
invoice.total_amount,
|
0, # total_amount - 計算値を保存しない
|
||||||
invoice.date.isoformat(),
|
invoice.date.isoformat(),
|
||||||
invoice.invoice_number,
|
invoice.invoice_number,
|
||||||
invoice.notes,
|
invoice.notes,
|
||||||
|
|
@ -338,6 +338,71 @@ class InvoiceRepository:
|
||||||
logging.error(f"伝票保存エラー: {e}")
|
logging.error(f"伝票保存エラー: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def update_invoice(self, invoice: Invoice) -> bool:
|
||||||
|
"""伝票を更新"""
|
||||||
|
try:
|
||||||
|
with sqlite3.connect(self.db_path) as conn:
|
||||||
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
# 伝票基本情報を更新
|
||||||
|
cursor.execute('''
|
||||||
|
UPDATE invoices
|
||||||
|
SET document_type = ?, customer_id = ?, date = ?,
|
||||||
|
invoice_number = ?, notes = ?, pdf_generated_at = ?
|
||||||
|
WHERE uuid = ?
|
||||||
|
''', (
|
||||||
|
invoice.document_type.value,
|
||||||
|
invoice.customer.id if hasattr(invoice.customer, 'id') else None,
|
||||||
|
invoice.date.isoformat(),
|
||||||
|
invoice.invoice_number,
|
||||||
|
invoice.notes,
|
||||||
|
getattr(invoice, 'pdf_generated_at', None),
|
||||||
|
invoice.uuid
|
||||||
|
))
|
||||||
|
|
||||||
|
# UUIDからinvoice_idを取得
|
||||||
|
cursor.execute('SELECT id FROM invoices WHERE uuid = ?', (invoice.uuid,))
|
||||||
|
result = cursor.fetchone()
|
||||||
|
if not result:
|
||||||
|
logging.error(f"伝票ID取得失敗: {invoice.uuid}")
|
||||||
|
return False
|
||||||
|
invoice_id = result[0]
|
||||||
|
|
||||||
|
# 明細を一度削除して再挿入
|
||||||
|
cursor.execute('DELETE FROM invoice_items WHERE invoice_id = ?', (invoice_id,))
|
||||||
|
|
||||||
|
for item in invoice.items:
|
||||||
|
cursor.execute('''
|
||||||
|
INSERT INTO invoice_items (invoice_id, description, quantity, unit_price, is_discount)
|
||||||
|
VALUES (?, ?, ?, ?, ?)
|
||||||
|
''', (
|
||||||
|
invoice_id, # 正しいinvoice_idを使用
|
||||||
|
item.description,
|
||||||
|
item.quantity,
|
||||||
|
item.unit_price,
|
||||||
|
item.is_discount
|
||||||
|
))
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
return True
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"伝票更新エラー: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
def delete_invoice_by_uuid(self, invoice_uuid: str) -> bool:
|
||||||
|
"""UUIDで伝票を削除"""
|
||||||
|
try:
|
||||||
|
with sqlite3.connect(self.db_path) as conn:
|
||||||
|
cursor = conn.cursor()
|
||||||
|
cursor.execute('DELETE FROM invoice_items WHERE invoice_id = (SELECT id FROM invoices WHERE uuid = ?)', (invoice_uuid,))
|
||||||
|
cursor.execute('DELETE FROM invoices WHERE uuid = ?', (invoice_uuid,))
|
||||||
|
conn.commit()
|
||||||
|
return True
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"伝票削除エラー: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
def update_invoice_file_path(self, invoice_uuid: str, file_path: str, pdf_generated_at: str):
|
def update_invoice_file_path(self, invoice_uuid: str, file_path: str, pdf_generated_at: str):
|
||||||
"""PDFファイルパスを更新"""
|
"""PDFファイルパスを更新"""
|
||||||
try:
|
try:
|
||||||
|
|
@ -419,11 +484,11 @@ class InvoiceRepository:
|
||||||
|
|
||||||
# 顧客情報
|
# 顧客情報
|
||||||
customer = Customer(
|
customer = Customer(
|
||||||
id=row[3] or 0,
|
id=row[15] or 0, # customer_idフィールド
|
||||||
name=row[4],
|
name=row[3], # customer_nameフィールド
|
||||||
formal_name=row[4],
|
formal_name=row[3], # customer_nameフィールド
|
||||||
address=row[5] or "",
|
address=row[4] or "", # customer_addressフィールド
|
||||||
phone=row[6] or ""
|
phone=row[5] or "" # customer_phoneフィールド
|
||||||
)
|
)
|
||||||
|
|
||||||
# 伝票タイプ
|
# 伝票タイプ
|
||||||
|
|
@ -435,11 +500,11 @@ class InvoiceRepository:
|
||||||
|
|
||||||
inv = Invoice(
|
inv = Invoice(
|
||||||
customer=customer,
|
customer=customer,
|
||||||
date=datetime.fromisoformat(row[10]),
|
date=datetime.fromisoformat(row[9]), # 正しいdateフィールドのインデックス
|
||||||
items=items,
|
items=items,
|
||||||
file_path=row[13],
|
file_path=row[12],
|
||||||
invoice_number=row[11] or "",
|
invoice_number=row[10] or "", # 正しいinvoice_numberフィールドのインデックス
|
||||||
notes=row[12],
|
notes=row[11], # 正しいnotesフィールドのインデックス
|
||||||
document_type=doc_type,
|
document_type=doc_type,
|
||||||
uuid=row[1],
|
uuid=row[1],
|
||||||
)
|
)
|
||||||
|
|
@ -570,11 +635,13 @@ class CustomerRepository:
|
||||||
customer.email
|
customer.email
|
||||||
))
|
))
|
||||||
|
|
||||||
|
# 挿入したIDを取得してcustomerオブジェクトを更新
|
||||||
|
customer.id = cursor.lastrowid
|
||||||
conn.commit()
|
conn.commit()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f"顧客新規登録エラー: {e}")
|
logging.error(f"顧客登録エラー: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def update_customer(self, customer: Customer) -> bool:
|
def update_customer(self, customer: Customer) -> bool:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue